home *** CD-ROM | disk | FTP | other *** search
Wrap
100 '-------------------- VIL組み込み開始 -------------------- 110 CLEAR ,,512,1024*700,0,0 'メモリ領域設定 120 SCREEN 0:CLS 130 VIL_W0%=0:VIL_W1%=0:VIL_W2%=0:VIL_W3%=0:VIL_W4%=0 '汎用ワーク変数 140 VIL_W5%=0:VIL_W6%=0:VIL_W7%=0:VIL_W8%=0:VIL_W9%=0 150 VIL_W0&=0:VIL_W1&=0:VIL_W2&=0:VIL_W3&=0:VIL_W4&=0 '汎用ワーク変数 160 VIL_W5&=0:VIL_W6&=0:VIL_W7&=0:VIL_W8&=0:VIL_W9&=0 170 VIL_W0$="":VIL_W1$="":VIL_W2$="":VIL_W3$="" 180 VIL_I%=0:VIL_J%=0:VIL_K%=0 'ループ変数 190 VIL_L%=0 '長さ 200 VIL_A$="" '文字列汎用 210 VIL_F$="" 'ファイル名汎用 220 VIL_C%=15:VIL_CB%=0 '描画色・背景色(0..15) 230 VIL_X%=0:VIL_Y%=0:VIL_W%=0:VIL_Z%=0 '左上隅・右下隅座標 240 VIL_XL%=0:VIL_YL%=0:VIL_XN%=0:VIL_YN%=0 'X・Y軸方向長さ・個数 250 VIL_P%=0 'パレット番号 260 VIL_KN%=0 '入力番号 270 VIL_K$="":VIL_KY%=0 '入力キー,アスキーコード 280 VIL_MX%=0:VIL_MY%=0:VIL_MW%=0:VIL_MZ%=0 'マウス位置 290 ' 300 VIL_E%=0 'エラー番号 310 VIL_DIR$="" 'VILディレクトリ 320 VIL_FMTDIR$="" 'FMTITLEディレクトリ 330 VIL_VER%=200 'VIL VER2.00 340 ' 350 *VIL_CNF '設定ファイル"VIL.CNF"読込 360 PRINT"Searching "+CHR$(34)+"VIL.CNF"+CHR$(34) 370 PRINT"Searching current directory" 380 GOSUB *VIL_ERR_ON:VIL_E%=0 390 OPEN "I",#1,"VIL.CNF" 'カレントディレクトリを探す 400 IF VIL_E%=63 THEN 410 PRINT"Searching root directory" 420 VIL_E%=0 430 OPEN "I",#1,"\VIL.CNF" 'ルートディレクトリを探す 440 IF VIL_E%=63 THEN '見つからなければ設定中止 450 PRINT"WARNING:"+CHR$(34)+"VIL.CNF"+CHR$(34)+" not found" 460 GOTO *VIL_L_BGN 470 ENDIF 480 ENDIF 490 PRINT"Reading "+CHR$(34)+"VIL.CNF"+CHR$(34) 500 WHILE EOF(1)=0 510 LINE INPUT #1,VIL_W0$ 520 IF LEFT$(VIL_W0$,1)<>"'" THEN 'コメント行スキップ 530 IF INSTR(VIL_W0$,"VILDIR") THEN 'VILディレクトリ設定 540 VIL_DIR$=MID$(VIL_W0$,INSTR(VIL_W0$,"=")+1) 550 ELSE IF INSTR(VIL_W0$,"FMTITLEDIR") THEN 'FMTITLEディレクトリ設定 560 VIL_FMTDIR$=MID$(VIL_W0$,INSTR(VIL_W0$,"=")+1) 570 ENDIF 580 ENDIF 590 WEND 600 CLOSE #1 610 ' 620 *VIL_L_BGN ' VIL リンク開始 630 ON ERROR GOTO 0 670 *VIL_L_END ' VIL リンク終了 680 ' 690 GOSUB *VIL_ERR_ON 700 GOSUB *VIL_DEFFN:GOTO *VIL_INITEND 710 ' 720 *VIL_ERR_ON:ON ERROR GOTO *VIL_ERR:RETURN 730 *VIL_ERR:VIL_E%=ERR:RESUME NEXT 740 ' 750 *VIL_DEFFN 760 ' S$:文字列に変換 SS$:左にスペースを詰める S0$:左に0を詰める 770 ' P :正の整数 I :整数 R :実数 780 DEF FNVIL_P2S$(X&) =MID$(STR$(X&),2) 790 DEF FNVIL_P2SS$(X&,Y%) =RIGHT$(" "+STR$(X&),Y%) 800 DEF FNVIL_P2S0$(X&,Y%) =RIGHT$("0000000000"+MID$(STR$(X&),2),Y%) 810 DEF FNVIL_I2S$(X&) =MID$(STR$(X&),1-(X&>=0)) 820 DEF FNVIL_I2SS$(X&,Y%) =RIGHT$(" "+STR$(X&),Y%) 830 '符号1桁(+-) + 00… + 数値 840 DEF FNVIL_I2S0$(X&,Y%) =MID$("+-",1-(X&<0),1) +RIGHT$("0000000000"+MID$(STR$(ABS(X&)),2) ,Y%-1) 850 DEF FNVIL_R2S$(X#) =MID$(STR$(X#),1-(X#>=0)) 860 DEF FNVIL_R2SS$(X#,Y%,Z%)=RIGHT$(" "+STR$(FIX(X#)),Y%)+"." +MID$("0000000000"+STR$(X#)+"0000000000" ,INSTR("0000000000"+STR$(X#),".")+1,Z%) 870 DEF FNVIL_R2S0$(X#,Y%,Z%)=MID$("+-",1-(X#<0),1)+RIGHT$("0000000000" +MID$(STR$(FIX(ABS(X#))),2),Y%-1)+MID$("0000000000"+STR$(X#) +"0000000000",INSTR("0000000000"+STR$(X#),".")+1,Z%) 880 RETURN 890 ' 900 *VIL_INITEND 910 '-------------------- VIL組み込み終了 -------------------- 10000 '<<<<<<<<<<<<<<< Visual Interface Library Demo >>>>>>>>>>>>>>> 10010 ' 10020 RANDOMIZE TIME:DEFINT A-Z 10030 ' 10040 SCREEN 1,0,1,0:VIEW(0,0)-(639,479):WINDOW(0,0)-(639,479) 10050 PALETTE@:CLS 10060 PLAY OFF 10070 ' 10080 '起動画面 10090 ' 10100 LINE(160,160)-(479,319),PSET,7,BF 10110 SYMBOL(224,168),"VIL",4,4,4 10120 SYMBOL(224,260),"Visual Interface Library",1,1,0 10130 SYMBOL(224,280)," Demonstration Program ",1,1,0 10140 ' 10150 SCREEN 1,1,1,0 10160 SCREEN @1 10170 LOAD@"S_SHIP2.TIF" 10180 ' 10190 SCREEN 1,0,1,0 10200 CLS 10210 ' 10220 '<<<<<<<<<<<<<<<<<<<< VIL INITIALIZE >>>>>>>>>>>>>>>>>>>> 10230 ' 10240 GOSUB *VIL_BEEP_INITM 10250 ' 10260 VIL_W0&=1024*500\2 '画面退避(最大ウィンドウ総面積) 10270 VIL_W1%=20 '最大ウィンドウ番号 10280 GOSUB *VIL_WIN_INITM 10290 ' 10300 VIL_W0%=110 '最大メニュー番号 10310 VIL_W1%=256 '最大ボックス数 10320 GOSUB *VIL_MSEL_INITM 10330 GOSUB *VIL_INP_INITM 10340 ' 10350 VIL_W0%=110 '最大ウィンドウ通し番号 10360 VIL_W1%=128 'ウィンドウ枠色初期設定 (G) 10370 VIL_W2%=128 ' (R) 10380 VIL_W3%=128 ' (B) 10390 VIL_W4%= 8 'ウィンドウ背景色用パレット番号 10400 VIL_W5%= 0 'ウィンドウ背景色初期設定(G) 10410 VIL_W6%= 0 ' (R) 10420 VIL_W7%= 0 ' (B) 10430 GOSUB *VIL_VWM_INITM 10440 GOSUB *VIL_SEL_INITM 10450 ' 10460 VIL_W0%=160:VIL_W1%=80 10470 GOSUB *VIL_SYSCNF_INITM 10480 ' 10490 VIL_W0%=160+32:VIL_W1%=80+32 '色設定ウィンドウ左上隅座標 10500 VIL_W2%=160+64:VIL_W3%=80+64 'パレット設定ウィンドウ左上隅座標 10510 VIL_W4%=-1 '表示輝度(高輝度) 10520 VIL_W5%=128 'ウィンドウ枠色初期設定 (G) 10530 VIL_W6%=128 'ウィンドウ枠色初期設定 (R) 10540 VIL_W7%=128 'ウィンドウ枠色初期設定 (B) 10550 GOSUB *VIL_COLCNF_INITM 10560 ' 10570 VIL_W0%=160+32:VIL_W1%=80+32 'BGM設定ウィンドウ左上隅座標 10580 GOSUB *VIL_BGM_INITM 10590 ' 10600 VIL_W0%=160+64:VIL_W1%=80+64 'BGM-FMウィンドウ左上隅座標 10610 VIL_W2%=160+96:VIL_W3%=80+16 '曲選択ウィンドウ左上隅座標 10620 VIL_W4%=255 'MMLデータ数 10630 VIL_W5%=16 '曲データ数 10640 VIL_W6%=0 'オンメモリにおく曲データ数-1 10650 GOSUB *VIL_BGMFM_INITM 10660 ' 10670 VIL_W0%=160+64:VIL_W1%=80+64 'BGM-CDウィンドウ左上隅座標 10680 GOSUB *VIL_BGMCD_INITM 10690 ' 10700 ' 10710 '<<<<<<<<<<<<<<<<<<<< MAIN MENU >>>>>>>>>>>>>>>>>>>> 10720 *MAINMENU 10730 ' 10740 GOSUB *VIL_WIN_PMA 10750 CLS:PALETTE 4,[100,0,150] 10760 LINE(0,0)-(639,479),PSET,%4,BF 10770 LINE(216,128)-(423,399),PRESET,,BF 10780 SYMBOL(224,32),"Visual Interface Library",1,1,7 10790 SYMBOL(272,64),"VIL",2,2,4,,,7 10800 SYMBOL(192,104),"デモンストレ-ション プログラム",1,1,4 10810 RESTORE 10860 10820 FOR Y=0 TO 3 10830 READ A$ 10840 SYMBOL(232,Y*32+144),FNVIL_P2S$(Y+1)+" "+A$,1,1,7 10850 NEXT 10860 DATA "はじめに","基本パッケージ" 10870 DATA "ウィンドウマネージャ","ユーティリティ" 10880 ' 10890 VIL_X%=224:VIL_Y%=142:VIL_W%=VIL_X%+191:VIL_Z%=VIL_Y%+19 10900 VIL_XN%=1:VIL_YN%=4:VIL_YL%=32:VIL_MSEL_BD%=0:VIL_C%=15:VIL_CB%=0 10910 VIL_MSEL_MN%=100:VIL_MSEL_BC%=0:VIL_MSEL_BB%=1:VIL_MSEL_BE%=4 10920 GOSUB *VIL_MSEL_M 10930 IF VIL_KN%>0 THEN ON VIL_KN% GOSUB *INTRO,*BAS,*VWM,*UTY 10940 GOTO *MAINMENU 10950 ' 10960 '<<<<<<<<<<<<<<<<<<<< はじめに >>>>>>>>>>>>>>>>>>>> 10970 *INTRO 10980 CLS 10990 VIL_WIN_X%=8:VIL_WIN_Y%=14:VIL_WIN_W%=VIL_WIN_X%+399:VIL_WIN_Z%=471 11000 VIL_VWM_AT%=0:VIL_VWM_T$="INTRO" 11010 GOSUB *VIL_VWM_OP 11020 SYMBOL(8, 8)," ~ はじめに ~ ",1,1,6 11030 SYMBOL(8, 36)," VILはF-BASIC386上のプログラムで、",1,1,7 11040 SYMBOL(8, 56),"マルチウィンドウ表示・マウス入力などのユーザ・イ",1,1,7 11050 SYMBOL(8, 76),"ンタフェースを実現するサブルーチン集です。 ",1,1,7 11060 SYMBOL(8, 96)," このデモンストレーション・プログラムでは、以下",1,1,7 11070 SYMBOL(8,116),"の項目でその機能を説明します。 ",1,1,7 11080 SYMBOL(8,136)," 2.基本パッケージ ",1,1,7 11090 SYMBOL(8,156)," 3.ウィンドウマネージャ ",1,1,7 11100 SYMBOL(8,176)," 4.ユーティリティ ",1,1,7 11110 SYMBOL(8,436)," リターンキーかマウスの左ボタンを押してください ",1,1,6 11120 WHILE INKEY$<>CHR$(13) AND MOUSE(3,0)=0 AND MOUSE(2,0)=0:WEND 11130 GOSUB *VIL_VWM_CL 11140 RETURN 11150 ' 11160 '<<<<<<<<<<<<<<<<<<<< 基本パッケージ >>>>>>>>>>>>>>>>>>>> 11170 *BAS 11180 ' 11190 CLS 11200 LINE(0,0)-(639,479),PSET,4,BF 11210 FOR I=0 TO 30 11220 LINE(RND*639,RND*480)-(RND*639,RND*480),XOR,RND*6+1,BF 11230 NEXT 11240 ' 11250 VIL_WIN_X%=30:VIL_WIN_Y%=50 11260 VIL_WIN_W%=VIL_WIN_X%+16*16+15:VIL_WIN_Z%=VIL_WIN_Y%+136+16+7 11270 VIL_WIN_UB%=0:VIL_WIN_DB%=0:VIL_WIN_LB%=0:VIL_WIN_RB%=0 11280 GOSUB *VIL_WIN_PMA:GOSUB *VIL_WIN_OP:GOSUB *VIL_WIN_PMR 11290 CLS 11300 SYMBOL(8, 8)," ~ VIL 基本パッケージ ~ ",1,1,6 11310 SYMBOL(8, 36),"基本パッケージは以下のパッケージ",1,1,7 11320 SYMBOL(8, 56),"から成っています。 ",1,1,7 11330 SYMBOL(8, 76),"・ブザー音パッケージ ",1,1,7 11340 SYMBOL(8, 96),"・ウィンドウ・パッケージ ",1,1,7 11350 SYMBOL(8,116),"・メニュー選択パッケージ ",1,1,7 11360 SYMBOL(8,136),"・入力パッケージ ",1,1,7 11370 ' 11380 VIL_WIN_X%=50:VIL_WIN_Y%=240 11390 VIL_WIN_W%=VIL_WIN_X%+16*13+15:VIL_WIN_Z%=VIL_WIN_Y%+68+16+7 11400 VIL_WIN_UB%=0:VIL_WIN_DB%=0:VIL_WIN_LB%=0:VIL_WIN_RB%=0 11410 GOSUB *VIL_WIN_PMA:GOSUB *VIL_WIN_OP:GOSUB *VIL_WIN_PMR 11420 CLS 11430 SYMBOL(8, 8),"ウィンドウ・パッケージでは",1,1,7 11440 SYMBOL(8, 28),"このように画面の矩形領域を",1,1,7 11450 SYMBOL(8, 48),"退避し、ウィンドウを開くこ",1,1,7 11460 SYMBOL(8, 68),"とができます。 ",1,1,7 11470 ' 11480 VIL_WIN_X%=30:VIL_WIN_Y%=350 11490 VIL_WIN_W%=VIL_WIN_X%+16*15+15:VIL_WIN_Z%=VIL_WIN_Y%+28+16+7 11500 VIL_WIN_UB%=5:VIL_WIN_DB%=5:VIL_WIN_LB%=5:VIL_WIN_RB%=5 11510 GOSUB *VIL_WIN_PMA 11520 GOSUB *VIL_WIN_OP 11530 'GOSUB *VIL_WIN_PMA 11540 LINE(VIL_WIN_X%-5,VIL_WIN_Y%-5)-(VIL_WIN_W%+5,VIL_WIN_Z%+5),PSET,0,B 11550 LINE(VIL_WIN_X%-4,VIL_WIN_Y%-4)-(VIL_WIN_W%+4,VIL_WIN_Z%+4),PSET,7,BF 11560 LINE(VIL_WIN_X%-2,VIL_WIN_Y%-2)-(VIL_WIN_W%+2,VIL_WIN_Z%+2),PSET,0,B 11570 LINE(VIL_WIN_X%-1,VIL_WIN_Y%-1)-(VIL_WIN_W%+1,VIL_WIN_Z%+1),PSET,0,B 11580 GOSUB *VIL_WIN_PMR 11590 SYMBOL(8, 8),"必要ならばユーザ・プログラムが",1,1,0 11600 SYMBOL(8, 28),"枠などを描画できます。 ",1,1,0 11610 ' 11620 VIL_WIN_X%=360:VIL_WIN_Y%=40 11630 VIL_WIN_W%=VIL_WIN_X%+16*11+15:VIL_WIN_Z%=VIL_WIN_Y%+139 11640 VIL_WIN_UB%=2:VIL_WIN_DB%=2:VIL_WIN_LB%=2:VIL_WIN_RB%=2 11650 GOSUB *VIL_WIN_PMA 11660 GOSUB *VIL_WIN_OP 11670 'GOSUB *VIL_WIN_PMA 11680 DEF PEN 0,2 11690 LINE(VIL_WIN_X%-2,VIL_WIN_Y%-2)-(VIL_WIN_W%+1,VIL_WIN_Z%+1),PSET,1,B 11700 GOSUB *VIL_WIN_PMR 11710 CLS 11720 FOR I=1 TO 7 11730 CIRCLE(0,0),I*5,I 11740 CIRCLE(190,10),I*5,I 11750 SYMBOL(-60+I*8*6,120),"SAMPLE",1,1,I 11760 NEXT 11770 SYMBOL(8, 50),"ウィンドウ内への描画は",1,1,7 11780 SYMBOL(8, 70),"このようにクリッピング",1,1,7 11790 SYMBOL(8, 90),"させることが可能です。",1,1,7 11800 ' 11810 PALETTE 4,[ 64, 64, 64] 11820 PALETTE 5,[128, 0, 0] 11830 RESTORE 12060 11840 FOR I=0 TO 2 11850 VIL_WIN_X%=320+I*24:VIL_WIN_Y%=240+I*48 11860 VIL_WIN_W%=VIL_WIN_X%+119:VIL_WIN_Z%=VIL_WIN_Y%+63 11870 VIL_WIN_UB%=16:VIL_WIN_DB%=2:VIL_WIN_LB%=2:VIL_WIN_RB%=2 11880 GOSUB *VIL_WIN_PMA 11890 GOSUB *VIL_WIN_OP 11900 'GOSUB *VIL_WIN_PMA 11910 LINE(VIL_WIN_X%-2,VIL_WIN_Y%-16) -(VIL_WIN_W%+2,VIL_WIN_Y%- 2),PSET,%5,BF 11920 DEF PEN 0,2 11930 LINE(VIL_WIN_X%-2,VIL_WIN_Y%-16) -(VIL_WIN_W%+1,VIL_WIN_Z%+ 1),PSET,%4,B 11940 LINE(VIL_WIN_X%-2,VIL_WIN_Y%- 2) -(VIL_WIN_W%+1,VIL_WIN_Y% -2),PSET,%4 11950 DEF PEN 0,1 11960 LINE(VIL_WIN_X%+1,VIL_WIN_Y%-13) -(VIL_WIN_X%+9,VIL_WIN_Y%-4),PSET,%4,B 11970 CIRCLE(VIL_WIN_X%+5,VIL_WIN_Y%-8.6!),2,%1,1.5!,,,F 11980 LINE(VIL_WIN_W%-1,VIL_WIN_Y%-13) -(VIL_WIN_W%-9,VIL_WIN_Y%- 4),PSET,%4,B 11990 LINE(VIL_WIN_W%-1,VIL_WIN_Y%-13) -(VIL_WIN_W%-5,VIL_WIN_Y%- 8),PSET,%4,B 12000 SYMBOL(VIL_WIN_X%+13,VIL_WIN_Y%-11),"xterm",.5!,.5!,%4 12010 GOSUB *VIL_WIN_PMR 12020 CLS 12030 READ A$ 12040 SYMBOL(8,8),A$,1,1,7 12050 NEXT 12060 DATA "ウィンドウの","重ね合わせも","このとおり" 12070 ' 12080 RESTORE 12190 12090 GOSUB *VIL_WIN_PMA 12100 LINE(316,434)-(639,479),PSET,7,BF 12110 SYMBOL(324,440),"リターンキーまたはマウスの左クリックで",1,1,0 12120 SYMBOL(324,460),"ウィンドウが1個ずつ閉じます。",1,1,0 12130 FOR I=1 TO 6 12140 WHILE INKEY$=CHR$(13) OR MOUSE(3,0):WEND 12150 WHILE INKEY$<>CHR$(13) AND MOUSE(3,0)=0:WEND 12160 READ VIL_WIN_UB%,VIL_WIN_DB%,VIL_WIN_LB%,VIL_WIN_RB% 12170 GOSUB *VIL_WIN_CL 12180 NEXT 12190 DATA 16,2,2,2, 16,2,2,2, 16,2,2,2, 2,2,2,2, 5,5,5,5, 0,0,0,0 12200 ' 12210 LINE(316,434)-(639,479),PSET,7,BF 12220 SYMBOL(324,440),"取消キーまたはマウスの右クリックで",1,1,0 12230 SYMBOL(324,460),"次に進みます。",1,1,0 12240 ' 12250 VIL_WIN_X%=50:VIL_WIN_Y%=240 12260 VIL_WIN_W%=VIL_WIN_X%+16*13+15:VIL_WIN_Z%=VIL_WIN_Y%+128+16+7 12270 VIL_WIN_UB%=0:VIL_WIN_DB%=0:VIL_WIN_LB%=0:VIL_WIN_RB%=0 12280 GOSUB *VIL_WIN_PMA:GOSUB *VIL_WIN_OP:GOSUB *VIL_WIN_PMR 12290 CLS 12300 SYMBOL(8, 8),"メニュー選択パッケージでは",1,1,7 12310 SYMBOL(8, 28),"・マウス ",1,1,7 12320 SYMBOL(8, 48),"・テンキー ",1,1,7 12330 SYMBOL(8, 68),"・カ-ソルキー ",1,1,7 12340 SYMBOL(8, 88),"のいずれかを使用して、 ",1,1,7 12350 SYMBOL(8,108),"画面の矩形領域(ボックス)",1,1,7 12360 SYMBOL(8,128),"の一つを選択できます。 ",1,1,7 12370 ' 12380 VIL_WIN_X%=320:VIL_WIN_Y%=40 12390 VIL_WIN_W%=VIL_WIN_X%+16*18+15:VIL_WIN_Z%=VIL_WIN_Y%+359 12400 VIL_WIN_UB%=0:VIL_WIN_DB%=0:VIL_WIN_LB%=0:VIL_WIN_RB%=0 12410 GOSUB *VIL_WIN_PMA:GOSUB *VIL_WIN_OP:GOSUB *VIL_WIN_PMR 12420 ' 12430 CLS 12440 SYMBOL(8, 8),"例えば下の数字の中から",1,1,7 12450 SYMBOL(8, 28),"一つ選択してみてください。",1,1,7 12460 FOR Y=0 TO 2 12470 FOR X=0 TO 2 12480 LINE(X*64+16,192-Y*64)-(X*64+63,192-Y*64+47),PSET,7,B 12490 SYMBOL(X*64+28,194-Y*64),FNVIL_I2S$(Y*3+X+1),3,3,7 12500 NEXT 12510 NEXT 12520 SYMBOL(16, 304),"選択→",1,1,7 12530 LINE(80,288)-(127,335),PSET,7,B 12540 ' 12550 VIL_MSEL_BN%=1:VIL_MSEL_MN%=0:VIL_MSEL_BC%=0 12560 ' 12570 VIL_X%=12:VIL_Y%=188:VIL_W%=VIL_X%+55:VIL_Z%=VIL_Y%+55 12580 VIL_XN%=3:VIL_YN%=3:VIL_XL%=64:VIL_YL%=64:VIL_MSEL_BD%=4:VIL_C%=10 12590 VIL_MSEL_BB%=1:VIL_MSEL_BE%=9 12600 GOSUB *VIL_MSEL_M 12610 IF VIL_KN%>0 THEN 12620 LINE(81,289)-(126,334),PRESET,,BF 12630 SYMBOL(92,290),FNVIL_P2S$(VIL_KN%),3,3,6 12640 ENDIF 12650 IF VIL_KN%<>-1 THEN 12570 12660 ' 12670 CLS 12680 ' 12690 ANS=INT(RND*64)+1 12700 FOR Y=0 TO 7 12710 FOR X=0 TO 7 12720 XA=RND*8:YA=RND*8 12730 SYMBOL(X*24+XA+64,Y*24+YA+64), KMID$("ΤT",2+(Y*8+X+1=ANS),1),1,1,RND*6+1 12740 NEXT 12750 NEXT 12760 SYMBOL(8,260)," ☆☆☆ 「Τを探せ」ゲ-ム ☆☆☆ ",1,1,6 12770 SYMBOL(8,280),"T(ティー)の中に一つだけ隠れている ",1,1,4 12780 SYMBOL(8,300),"Τ(タウ)を見つけて選択してください。",1,1,4 12790 ' 12800 VIL_MSEL_BN%=1:VIL_MSEL_MN%=0:VIL_MSEL_BC%=0 12810 ' 12820 VIL_X%=64:VIL_Y%=64:VIL_W%=VIL_X%+23:VIL_Z%=VIL_Y%+23 12830 VIL_XL%=24:VIL_YL%=24:VIL_XN%=8:VIL_YN%=8:VIL_MSEL_BD%=0:VIL_C%=15 12840 VIL_MSEL_BB%=1:VIL_MSEL_BE%=64 12850 GOSUB *VIL_MSEL_M 12860 IF VIL_KN%>0 THEN 12870 IF VIL_KN%=ANS THEN 12880 LINE(80,320)-(239,335),PRESET,,BF 12890 SYMBOL(80,320),"☆☆☆ 正解! ☆☆☆",1,1,6 12900 GOSUB *VIL_BEEP_G 12910 GOTO 12670 12920 ELSE 12930 LINE(80,320)-(239,335),PRESET,,BF 12940 SYMBOL(80,320),"××× はずれ ×××",1,1,2 12950 GOSUB *VIL_BEEP_B 12960 ENDIF 12970 ENDIF 12980 IF VIL_KN%<>-1 THEN 12830 12990 ' 13000 CLS 13010 ' 13020 LINE(4, 4)-(299,295),PSET,4,B 13030 LINE(8, 30)-(295,229),PSET,4,B 13040 LINE(8,234)-(295,261),PSET,4,B 13050 SYMBOL(104,10),"MYSTIC HOUSE",1,1,4 13060 SYMBOL(16,238),"見る 取る 動かす たたく 終わる",1,1,4 13070 SYMBOL(8,302)," ↑ アドベンチャーゲームなどにも",1,1,7 13080 SYMBOL(8,322)," 利用できます。",1,1,7 13090 RESTORE 13140 13100 FOR I=0 TO 17 13110 READ K,X,Y:LINE(X,Y)-(X,Y),PSET,4 13120 FOR J=2 TO K:READ X,Y:LINE -(X,Y),PSET,4:NEXT 13130 NEXT 13140 DATA 4, 48, 30, 48,110, 255,110, 255, 30 13150 DATA 2, 48,110, 8,229 13160 DATA 2, 255,110, 295,229 13170 DATA 4, 70,110, 70, 35, 110, 35, 110,110 13180 DATA 5, 74, 70, 74, 73, 77, 73, 77, 70, 74, 70 13190 DATA 5, 130,130, 120,160, 210,160, 200,130, 130,130 13200 DATA 4, 120,160, 120,170, 210,170, 210,160 13210 DATA 4, 135,170, 125,210, 130,210, 140,170 13220 DATA 4, 195,170, 205,210, 200,210, 190,170 13230 DATA 5, 265, 40, 265, 80, 280,130, 280, 90, 265, 40 13240 DATA 5, 160, 45, 160, 80, 200, 80, 200, 45, 160, 45 13250 DATA 5, 170, 50, 173, 74, 187, 70, 188, 52, 170, 50 13260 DATA 2, 174, 56, 177, 55 13270 DATA 2, 182, 56, 185, 58 13280 DATA 2, 180, 57, 178, 62 13290 DATA 2, 176, 70, 181, 67 13300 DATA 5, 65,127, 65, 122, 70,127, 65,127, 58,134 13310 DATA 2, 61,131,63,134 13320 ' 13330 VIL_MSEL_BN%=1:VIL_MSEL_BC%=0 13340 ' 13350 VIL_X%=14:VIL_Y%=236:VIL_W%=VIL_X%+51:VIL_Z%=VIL_Y%+23 13360 VIL_XN%=5:VIL_YN%=1:VIL_XL%=56:VIL_MSEL_BD%=0:VIL_C%=15 13370 VIL_MSEL_BB%=1:VIL_MSEL_BE%=5:VIL_MSEL_MN%=101 13380 GOSUB *VIL_MSEL_M 13390 IF VIL_KN%>0 THEN 13400 VIL_X%=8:VIL_Y%=265:VIL_L%=36:VIL_C%=12 13410 VIL_A$=KMID$("見る 取る 動かすたたく終わる",VIL_KN%*3-2,3) 13420 GOSUB *VIL_INP_GPRINT 13430 IF VIL_KN%=5 THEN 13890 13440 VERB=VIL_KN% 13450 ' 13460 RESTORE 13560 13470 FOR I=1 TO 5 13480 READ VIL_MSEL_X%(I),VIL_MSEL_Y%(I),VIL_MSEL_W%(I),VIL_MSEL_Z%(I) 13490 NEXT 13500 VIL_XN%=5:VIL_YN%=1:VIL_MSEL_BD%=0:VIL_C%=15 13510 VIL_MSEL_MN%=102:VIL_MSEL_BC%=0 13520 VIL_MSEL_BB%=1:VIL_MSEL_BE%=5 13530 GOSUB *VIL_MSEL_IN 13540 GOSUB *VIL_MSEL_BC 13550 IF VIL_KN%<1 THEN 13460 13560 DATA 68, 33,112,112 13570 DATA 158, 43,202, 82 13580 DATA 263, 38,282,132 13590 DATA 56,120, 72,136 13600 DATA 118,128,212,212 13610 ' 13620 RESTORE 13630:FOR I=1 TO VIL_KN%:READ VIL_A$:NEXT 13630 DATA ドア,肖像画,窓,鍵,テーブル 13640 VIL_X%=64:VIL_Y%=265:VIL_L%=8:VIL_C%=12:VIL_CB%=0 13650 GOSUB *VIL_INP_GPRINT 13660 ' 13670 RESTORE 13750 13680 FOR I=1 TO VERB 13690 IF I=VERB THEN 13700 FOR J=1 TO VIL_KN%:READ VIL_A$:NEXT 13710 ELSE 13720 FOR J=1 TO 5:READ VIL_A$:NEXT 13730 ENDIF 13740 NEXT 13750 DATA "閉まっている ","見覚えのない顔だ ","外は晴れている " 13760 DATA "黄金の鍵だ ","埃が積もっている " 13770 DATA "取れるわけがない ","使い道はなさそうだ","取れるわけがない " 13780 DATA "何故か取れない ","重くて持てない " 13790 DATA "鍵が掛かっている ","ネジ止めされている","錆びついている " 13800 DATA "何故か動かない ","疲れるからいやだ " 13810 DATA "トントン ","手が痛いからいやだ","叩いても開かない " 13820 DATA "叩いてどーする ","ドンドン " 13830 VIL_X%=136:VIL_Y%=265:VIL_L%=20:VIL_C%=12:VIL_CB%=0 13840 VIL_A$=": "+VIL_A$ 13850 GOSUB *VIL_INP_GPRINT 13860 ENDIF 13870 GOTO 13350 13880 ' 13890 GOSUB *VIL_WIN_PMA:GOSUB *VIL_WIN_CL:GOSUB *VIL_WIN_CL 13900 ' 13910 VIL_WIN_X%=50:VIL_WIN_Y%=240 13920 VIL_WIN_W%=VIL_WIN_X%+16*10+15:VIL_WIN_Z%=VIL_WIN_Y%+48+16+7 13930 VIL_WIN_UB%=0:VIL_WIN_DB%=0:VIL_WIN_LB%=0:VIL_WIN_RB%=0 13940 GOSUB *VIL_WIN_PMA:GOSUB *VIL_WIN_OP:GOSUB *VIL_WIN_PMR 13950 CLS 13960 SYMBOL(8, 8),"入力パッケージでは、",1,1,7 13970 SYMBOL(8, 28),"任意長の半角文字列を",1,1,7 13980 SYMBOL(8, 48),"入力できます。 ",1,1,7 13990 ' 14000 VIL_WIN_X%=320:VIL_WIN_Y%=40 14010 VIL_WIN_W%=VIL_WIN_X%+16*18+15:VIL_WIN_Z%=VIL_WIN_Y%+375 14020 VIL_WIN_UB%=0:VIL_WIN_DB%=0:VIL_WIN_LB%=0:VIL_WIN_RB%=0 14030 GOSUB *VIL_WIN_PMA:GOSUB *VIL_WIN_OP:GOSUB *VIL_WIN_PMR 14040 NAM$="":TIM$="" 14050 ' 14060 CLS 14070 SYMBOL(8, 8),"***** 使用可能キー *****",1,1,6 14080 SYMBOL(8, 28),"[RET] : 決定 ",1,1,7 14090 SYMBOL(8, 48),"[取消] : 取消 ",1,1,7 14100 SYMBOL(8, 68),"← → : カーソル移動 ",1,1,7 14110 SYMBOL(8, 88),"[BS] : カーソル位置の左1文字削除",1,1,7 14120 SYMBOL(8,108),"[削除] : カーソル位置1文字削除 ",1,1,7 14130 SYMBOL(8,128),"[HOME] : クリア ",1,1,7 14140 SYMBOL(8,148),"※ マウスの左/右ボタンは[RET]/[取消]",1,1,7 14150 SYMBOL(8,168)," と同じ意味を持ちます。 ",1,1,7 14160 SYMBOL(8,198),"***** 使用例 *****",1,1,6 14170 ' 14180 SYMBOL(8,218),"あなたの名前を入力してください。 ",1,1,7 14190 SYMBOL(8,238),"(半角16文字以内) : ",1,1,7 14200 ' 14210 VIL_X%=8+16*9:VIL_Y%=238:VIL_L%=16:VIL_C%=15:VIL_CB%=0:VIL_A$=NAM$ 14220 GOSUB *VIL_INP_STR 14230 IF VIL_KN%=-1 OR VIL_KN%=-2 OR VIL_A$="" THEN 14210 14240 NAM$=VIL_A$ 14250 ' 14260 SYMBOL(8,258),"現在時刻を入力してください。 ",1,1,7 14270 SYMBOL(8,278),"(00:00~23:59) : ",1,1,7 14280 ' 14290 VIL_X%=8+16*9:VIL_Y%=278:VIL_L%=5:VIL_C%=15:VIL_CB%=0:VIL_A$=TIM$ 14300 GOSUB *VIL_INP_STR 14310 IF VIL_KN%=-1 OR VIL_KN%=-2 OR VIL_A$="" THEN 14290 14320 TIM$=VIL_A$ 14330 IF LEN(VIL_A$)<>5 OR MID$(VIL_A$,3,1)<>":" THEN 14290 14340 HOUR=VAL(LEFT$(VIL_A$,2)):MINUTE=VAL(MID$(VIL_A$,4,2)) 14350 IF HOUR<0 OR 23<HOUR OR MINUTE<0 OR 59<MINUTE THEN 14360 GOSUB *VIL_BEEP_B:GOTO 14290 14370 ENDIF 14380 IF 6<=HOUR AND HOUR<=11 THEN 14390 A$="おはよう。" 14400 ELSE IF 12=<HOUR AND HOUR<=18 THEN 14410 A$="こんにちは。" 14420 ELSE 14430 A$="こんばんは。" 14440 ENDIF 14450 ' 14460 SYMBOL(8,298),"現在"+FNVIL_P2S$(HOUR)+"時"+FNVIL_P2S$(MINUTE)+"分。" ,1,1,4 14470 SYMBOL(8,318),NAM$+"さん、"+A$,1,1,4 14480 SYMBOL(8,346),"もう一度やる?",1,1,7 14490 VIL_MSEL_BN%=1 14500 VIL_X%=132:VIL_Y%=342 14510 GOSUB *VIL_SEL_YN 14520 IF VIL_KN%<1 THEN 14500 14530 IF VIL_KN%=1 THEN 14060 14540 ' 14550 GOSUB *VIL_WIN_PMA:GOSUB *VIL_WIN_CLALL 14560 RETURN 14570 ' 14580 '<<<<<<<<<<<<<<<<<<<< ウィンドウマネージャ >>>>>>>>>>>>>>>>>>>> 14590 *VWM 14600 CLS 14610 VIL_VWM_N%=0 14620 VIL_WIN_UB%=14:VIL_WIN_DB%=8:VIL_WIN_RB%=8:VIL_WIN_LB%=8 14630 'ウィンドウ枠幅設定 14640 PALETTE 7,[255,255,255] 'パレット(8 XOR 15)を白にする 14650 PALETTE 5,[80,80,0] 14660 FOR Y=0 TO 479 STEP 16 14670 FOR X=0 TO 639 STEP 8*7 14680 SYMBOL(X,Y),"VIL ",1,1,%5,,NOT 14690 NEXT 14700 NEXT 14710 ' 14720 VIL_WIN_X%=100 :VIL_WIN_Y%=40 14730 VIL_WIN_W%=VIL_WIN_X%+16*19+15:VIL_WIN_Z%=VIL_WIN_Y%+8+16+7 14740 VIL_VWM_T$="VWM":VIL_VWM_AT%=0 14750 GOSUB *VIL_VWM_OP 14760 SYMBOL( 8, 8),"~ ウィンドウマネージャ・パッケージ ~",1,1,6 14770 ' 14780 GOSUB *VIL_WIN_PMA 14790 VIL_WIN_X%=20 :VIL_WIN_Y%=80 14800 VIL_WIN_W%=VIL_WIN_X%+16*16+15:VIL_WIN_Z%=VIL_WIN_Y%+136+16+7 14810 VIL_VWM_T$="MOVE":VIL_VWM_AT%=8 14820 GOSUB *VIL_VWM_OP 14830 SYMBOL( 8, 8)," ~ ウィンドウ移動 ~ ",1,1,6 14840 SYMBOL( 8, 36)," MOVE 属性をもつウィンドウは、上",1,1,7 14850 SYMBOL( 8, 56),"部のタイトルバーにマウスカーソル",1,1,7 14860 SYMBOL( 8, 76),"を合わせて左ボタンを押すと、ドラ",1,1,7 14870 SYMBOL( 8, 96),"ッグで動かすことができます。 ",1,1,7 14880 SYMBOL( 8,136)," 納得した。→ ",1,1,7 14890 ' 14900 VIL_KN%=0 14910 WHILE VIL_KN%<>1 14920 VIL_X%=228:VIL_Y%=132 14930 GOSUB *VIL_SEL_OK 14940 IF VIL_KN%=-2 THEN GOSUB *VIL_VWM_WIN 14950 WEND 14960 ' 14970 VIL_WIN_X%=60 :VIL_WIN_Y%=122 14980 VIL_WIN_W%=VIL_WIN_X%+16*15+15:VIL_WIN_Z%=VIL_WIN_Y%+116+16+7 14990 VIL_VWM_T$="CLOSE 0":VIL_VWM_AT%=0 15000 GOSUB *VIL_VWM_OP 15010 SYMBOL(8, 8)," ~ ウィンドウ・クローズ ~ ",1,1,6 15020 SYMBOL(8,36),"CLOSE 属性をもつウィンドウは、",1,1,7 15030 SYMBOL(8,56),"左上隅の スイッチをクリックす",1,1,7 15040 SYMBOL(8,76),"ると、閉じることができます。 ",1,1,7 15050 LINE(75,60)-(84,69),PSET,7,B 15060 LINE(75,60)-(84,69),PSET,7 15070 LINE(75,69)-(84,60),PSET,7 15080 ' 15090 VIL_WIN_X%=160 :VIL_WIN_Y%=250 15100 VIL_WIN_W%=VIL_WIN_X%+16*12+15:VIL_WIN_Z%=VIL_WIN_Y%+28+16+7 15110 VIL_VWM_T$="CLOSE 1":VIL_VWM_AT%=2 15120 GOSUB *VIL_VWM_OP 15130 SYMBOL(8, 8),"例えば、このウィンドウを",1,1,7 15140 SYMBOL(8,28),"閉じてみてください。 ",1,1,7 15150 ' 15160 VIL_VWM_R%=0 15170 WHILE VIL_VWM_R%<>2 15180 MOUSE 1,,,1 15190 WHILE MOUSE(3,0)=0 AND MOUSE(2,0)=0:WEND 15200 VIL_MX%=MOUSE(0):VIL_MY%=MOUSE(1) 15210 MOUSE 1,,,0 15220 GOSUB *VIL_VWM_WIN 15230 WEND 15240 ' 15250 WHILE INKEY$<>"":WEND 15260 SYMBOL(8,116),"もう一度やる?",1,1,7 15270 'VIL_KN%=0 15280 VIL_X%=132:VIL_Y%=112 15290 GOSUB *VIL_SEL_YN 15300 IF VIL_KN%<1 THEN 15280 15310 IF VIL_KN%=1 THEN 15090 15320 ' 15330 VIL_WIN_X%=100 :VIL_WIN_Y%=164 15340 VIL_WIN_W%=VIL_WIN_X%+16*15+15:VIL_WIN_Z%=VIL_WIN_Y%+136+16+7 15350 VIL_VWM_T$="HIDE":VIL_VWM_AT%=4 15360 GOSUB *VIL_VWM_OP 15370 SYMBOL(8, 8)," ~ ウィンドウ一時消去 ~ ",1,1,6 15380 SYMBOL(8, 36)," HIDE 属性をもつウィンドウは、",1,1,7 15390 SYMBOL(8, 56),"左上隅の スイッチをクリックす",1,1,7 15400 SYMBOL(8, 76),"ると、左ボタンを押している間、",1,1,7 15410 SYMBOL(8, 96),"一時的に閉じることができます。",1,1,7 15420 SYMBOL(8,136)," 納得したら → ",1,1,7 15430 LINE(75,60)-(84,69),PSET,7,B 15440 LINE(75,69)-(84,60),PSET,7 15450 ' 15460 VIL_KN%=0 15470 WHILE VIL_KN% <> 1 15480 VIL_X%=212:VIL_Y%=132 15490 GOSUB *VIL_SEL_OK 15500 IF VIL_KN%=-2 THEN GOSUB *VIL_VWM_WIN 15510 WEND 15520 ' 15530 VIL_WIN_X%=140 :VIL_WIN_Y%=206 15540 VIL_WIN_W%=VIL_WIN_X%+16*16+15:VIL_WIN_Z%=VIL_WIN_Y%+136+16+7 15550 VIL_VWM_T$="RESIZE":VIL_VWM_AT%=16 15560 GOSUB *VIL_VWM_OP 15570 SYMBOL(8, 8)," ~ ウィンドウ・サイズ変更 ~ ",1,1,6 15580 SYMBOL(8, 36)," RESIZE 属性をもつウィンドウは、",1,1,7 15590 SYMBOL(8, 56),"右上隅の スイッチにマウスカーソ",1,1,7 15600 SYMBOL(8, 76),"ルを合わせて左ボタンを押すと、ド",1,1,7 15610 SYMBOL(8, 96),"ラッグで大きさを変えることができ",1,1,7 15620 SYMBOL(8,116),"ます。 ",1,1,7 15630 SYMBOL(8,136)," 納得したら → ",1,1,7 15640 LINE(75,60)-(84,69),PSET,7,B 15650 LINE(75,64)-(80,69),PSET,7,B 15660 ' 15670 'VIL_KN%=0 15680 VIL_X%=212:VIL_Y%=132 15690 GOSUB *VIL_SEL_OK 15700 IF VIL_KN%=-2 THEN GOSUB *VIL_VWM_WIN:IF VIL_VWM_R%=16 THEN 15570 15710 IF VIL_KN%<>1 THEN 15680 15720 ' 15730 FOR I=1 TO 4:GOSUB *VIL_VWM_CL:NEXT 15740 VIL_WIN_X%=20 :VIL_WIN_Y%=80 15750 VIL_WIN_W%=VIL_WIN_X%+16*18+15:VIL_WIN_Z%=VIL_WIN_Y%+218+16+7 15760 VIL_VWM_T$="ALL 0":VIL_VWM_AT%=0 15770 GOSUB *VIL_VWM_OP 15780 SYMBOL(8, 8)," 最後の例として、全属性を指定したウ",1,1,7 15790 SYMBOL(8, 28),"ィンドウを右に挙げます。いろいろ試し",1,1,7 15800 SYMBOL(8, 48),"てみてください。 ",1,1,7 15810 SYMBOL(8, 68)," なお、このウィンドウは ",1,1,7 15820 SYMBOL(8, 88),"・移動範囲 : (120,40)-(599,439) ",1,1,4 15830 SYMBOL(8,108),"・最大サイズ : 328×248ドット ",1,1,4 15840 SYMBOL(8,128),"・最小サイズ : 136× 72ドット ",1,1,4 15850 SYMBOL(8,148),"・移動単位 : X・Y方向共 8ドット ",1,1,4 15860 SYMBOL(8,168),"・リサイズ単位 : X・Y方向共16ドット ",1,1,4 15870 SYMBOL(8,188),"となっています。 ",1,1,7 15880 ' 15890 VIL_WIN_X%=320 :VIL_WIN_Y%=120 15900 VIL_WIN_W%=VIL_WIN_X%+167:VIL_WIN_Z%=VIL_WIN_Y%+119 15910 VIL_VWM_T$="ALL 1":VIL_VWM_AT%=1+2+4+8+16 15920 GOSUB *VIL_VWM_OP 15930 GOSUB 16390 15940 VIL_VWM_XM%=120 '移動/リサイズ時ウィンドウ左上隅座標最小値 15950 VIL_VWM_YM%= 40 15960 VIL_VWM_WM%=599 '移動/リサイズ時ウィンドウ右下隅座標最大値 15970 VIL_VWM_ZM%=439 15980 VIL_VWM_XL%=136 'リサイズ時のX・Y方向長さ最小値 15990 VIL_VWM_YL%= 72 16000 VIL_VWM_WL%=328 'リサイズ時のX・Y方向長さ最大値 16010 VIL_VWM_ZL%=248 16020 VIL_VWM_XD%= 8 '移動時の単位ドット数 16030 VIL_VWM_YD%= 8 16040 VIL_VWM_WD%= 16 'リサイズ時の単位ドット数 16050 VIL_VWM_ZD%= 16 16060 ' 16070 MOUSE 1,,,1:VIL_VWM_R%=0 16080 WHILE VIL_VWM_R%<>2 16090 VIL_X%=8:VIL_Y%=8:VIL_W%=VIL_X%+7:VIL_Z%=VIL_Y%+7 16100 VIL_XN%=1:VIL_YN%=1:VIL_MSEL_BD%=0:VIL_C%=15:VIL_MSEL_MN%=0 16110 VIL_MSEL_BB%=1:VIL_MSEL_BE%=1 16120 GOSUB *VIL_MSEL_M 16130 GOSUB *VIL_VWM_CHECK 16140 IF VIL_VWM_R% AND VIL_VWM_R%<>2 THEN GOSUB 16390 16150 WEND 16160 ' 16170 SYMBOL(8,218),"もう一度やる?",1,1,7 16180 'VIL_KN%=0 16190 VIL_X%=132:VIL_Y%=218 16200 GOSUB *VIL_SEL_YN 16210 IF VIL_KN%<1 THEN 16200 16220 IF VIL_KN%=1 THEN 15890 16230 ' 16240 VIL_VWM_XM%= 8 '移動/リサイズ時ウィンドウ左上隅座標最小値 16250 VIL_VWM_YM%= 14 16260 VIL_VWM_WM%=631 '移動/リサイズ時ウィンドウ右下隅座標最大値 16270 VIL_VWM_ZM%=471 16280 VIL_VWM_XL%= 32 'リサイズ時のX・Y方向長さ最小値 16290 VIL_VWM_YL%= 8 16300 VIL_VWM_WL%=624 'リサイズ時のX・Y方向長さ最大値 16310 VIL_VWM_ZL%=458 16320 VIL_VWM_XD%= 1 '移動時の単位ドット数 16330 VIL_VWM_YD%= 1 16340 VIL_VWM_WD%= 1 'リサイズ時の単位ドット数 16350 VIL_VWM_ZD%= 1 16360 GOSUB *VIL_VWM_CLALL 16370 RETURN 16380 ' 16390 GOSUB *VIL_VWM_CLS 16400 CIRCLE((VIL_WIN_W%-VIL_WIN_X%)\2,(VIL_WIN_Z%-VIL_WIN_Y%)\2) ,(VIL_WIN_W%-VIL_WIN_X%)\2,1 ,(VIL_WIN_Z%-VIL_WIN_Y%)/(VIL_WIN_W%-VIL_WIN_X%) 16410 A$="位置 ("+FNVIL_P2S0$(VIL_WIN_X%,3)+"," +FNVIL_P2S0$(VIL_WIN_Y%,3)+")" 16420 SYMBOL(8, 8),A$,1,1,6 16430 A$=" -("+FNVIL_P2S0$(VIL_WIN_W%,3)+"," +FNVIL_P2S0$(VIL_WIN_Z%,3)+")" 16440 SYMBOL(8,28),A$,1,1,6 16450 A$="サイズ("+FNVIL_P2S0$(VIL_WIN_W%-VIL_WIN_X%+1,3)+"," +FNVIL_P2S0$(VIL_WIN_Z%-VIL_WIN_Y%+1,3)+")" 16460 SYMBOL(8,48),A$,1,1,6 16470 RETURN 16480 ' 16490 '<<<<<<<<<<<<<<<<<<<< ユーティリティ >>>>>>>>>>>>>>>>>>>> 16500 *UTY 16510 CLS 16520 VIL_WIN_UB%=14:VIL_WIN_DB%=8:VIL_WIN_RB%=8:VIL_WIN_LB%=8 16530 'ウィンドウ枠幅設定 16540 PALETTE 7,[255,255,255] 'パレット(8 XOR 15)を白にする 16550 SCREEN 1,0,3,0 16560 VIL_WIN_X%=100:VIL_WIN_Y%=20:GOSUB *VIL_SYSCNF_M 16570 SCREEN 1,0,1,0 16580 RETURN 40030 *VIL_BAS_VER 40035 VIL_VER%=200 40040 RETURN 40070 *VIL_BEEP_INITM 40120 RETURN 40130 *VIL_BEEP_G 40170 FOR VIL_I%=1 TO 4:BEEP 363523,5,400:WAIT 5:NEXT 40175 RETURN 40185 *VIL_BEEP_B 40225 BEEP 363523,40,80:WAIT 40 40230 RETURN 40270 *VIL_WIN_INITM 40320 VIL_WIN_X%=0:VIL_WIN_Y%=0 40325 VIL_WIN_W%=0:VIL_WIN_Z%=0 40330 VIL_WIN_UB%=0:VIL_WIN_DB%=0 40335 VIL_WIN_LB%=0:VIL_WIN_RB%=0 40340 VIL_WIN_AN%=0 40345 VIL_WIN_PM%=0 40350 VIL_WIN_BFMAX&=VIL_W0& 40355 VIL_WIN_ANMAX%=VIL_W1% 40360 DIM VIL_WIN_BF%(VIL_W0&) 40365 DIM VIL_WIN_BFO&(VIL_W1%) 40370 DIM VIL_WIN_X%(VIL_W1%),VIL_WIN_Y%(VIL_W1%) 40375 DIM VIL_WIN_W%(VIL_W1%),VIL_WIN_Z%(VIL_W1%) 40385 VIL_WIN_X%(0)=0:VIL_WIN_Y%(0)=0 40390 VIL_WIN_W%(0)=639:VIL_WIN_Z%(0)=479 40400 RETURN 40410 *VIL_WIN_OP 40475 VIL_WIN_AN%=VIL_WIN_AN%+1 40480 VIL_WIN_X%(VIL_WIN_AN%)=VIL_WIN_X%:VIL_WIN_Y%(VIL_WIN_AN%)=VIL_WIN_Y% 40485 VIL_WIN_W%(VIL_WIN_AN%)=VIL_WIN_W%:VIL_WIN_Z%(VIL_WIN_AN%)=VIL_WIN_Z% 40490 VIL_WIN_BFO&(VIL_WIN_AN%)=VIL_WIN_BFO&(VIL_WIN_AN%-1)+INT((INT((VIL_WIN_W%-VIL_WIN_X%+VIL_WIN_LB%+VIL_WIN_RB%+8)/8)*(VIL_WIN_Z%-VIL_WIN_Y%+VIL_WIN_UB%+VIL_WIN_DB%+1)*4+1)/2) 40495 VIL_E%=0 40500 GET@A(VIL_WIN_X%-VIL_WIN_LB%,VIL_WIN_Y%-VIL_WIN_UB%)-(VIL_WIN_W%+VIL_WIN_RB%,VIL_WIN_Z%+VIL_WIN_DB%),VIL_WIN_BF%,VIL_WIN_BFO&(VIL_WIN_AN%-1) 40505 IF VIL_E%THEN 40510 VIL_WIN_AN%=VIL_WIN_AN%-1 40515 VIL_WIN_X%=VIL_WIN_X%(VIL_WIN_AN%) 40520 VIL_WIN_Y%=VIL_WIN_Y%(VIL_WIN_AN%) 40525 VIL_WIN_W%=VIL_WIN_W%(VIL_WIN_AN%) 40530 VIL_WIN_Z%=VIL_WIN_Z%(VIL_WIN_AN%) 40535 ENDIF 40540 RETURN 40550 *VIL_WIN_CL 40600 PUT@A(VIL_WIN_X%(VIL_WIN_AN%)-VIL_WIN_LB%,VIL_WIN_Y%(VIL_WIN_AN%)-VIL_WIN_UB%)-(VIL_WIN_W%(VIL_WIN_AN%)+VIL_WIN_RB%,VIL_WIN_Z%(VIL_WIN_AN%)+VIL_WIN_DB%),VIL_WIN_BF%,,,,,VIL_WIN_BFO&(VIL_WIN_AN%-1) 40605 VIL_WIN_AN%=VIL_WIN_AN%-1 40610 VIL_WIN_X%=VIL_WIN_X%(VIL_WIN_AN%):VIL_WIN_Y%=VIL_WIN_Y%(VIL_WIN_AN%) 40615 VIL_WIN_W%=VIL_WIN_W%(VIL_WIN_AN%):VIL_WIN_Z%=VIL_WIN_Z%(VIL_WIN_AN%) 40620 RETURN 40630 *VIL_WIN_CLDMY 40680 VIL_WIN_AN%=VIL_WIN_AN%-1 40685 VIL_WIN_X%=VIL_WIN_X%(VIL_WIN_AN%):VIL_WIN_Y%=VIL_WIN_Y%(VIL_WIN_AN%) 40690 VIL_WIN_W%=VIL_WIN_W%(VIL_WIN_AN%):VIL_WIN_Z%=VIL_WIN_Z%(VIL_WIN_AN%) 40695 RETURN 40705 *VIL_WIN_CLALL 40755 WHILE VIL_WIN_AN% 40760 GOSUB*VIL_WIN_CL 40765 WEND 40770 RETURN 40780 *VIL_WIN_PMR 40820 VIL_WIN_PM%=-1 40825 VIEW(VIL_WIN_X%,VIL_WIN_Y%)-(VIL_WIN_W%,VIL_WIN_Z%) 40830 WINDOW(0,0)-(VIL_WIN_W%-VIL_WIN_X%,VIL_WIN_Z%-VIL_WIN_Y%) 40835 RETURN 40845 *VIL_WIN_PMA 40885 VIL_WIN_PM%=0 40890 VIEW(0,0)-(639,479) 40895 WINDOW(0,0)-(639,479) 40900 RETURN 40930 *VIL_MSEL_INITM 40980 VIL_MSEL_MN%=0 40985 VIL_MSEL_BB%=1 40990 VIL_MSEL_BE%=9 40995 VIL_MSEL_BN%=0 41000 VIL_MSEL_BC%=0 41005 VIL_MSEL_BD%=0 41030 VIL_MSEL_KY%=0 41070 DIM VIL_MSEL_X%(VIL_W1%),VIL_MSEL_Y%(VIL_W1%) 41075 DIM VIL_MSEL_W%(VIL_W1%),VIL_MSEL_Z%(VIL_W1%) 41080 DIM VIL_MSEL_BN%(VIL_W0%) 41085 DIM VIL_MSEL_KB%(127) 41095 RESTORE 41125 41100 FOR VIL_I%=0 TO 127 41105 READ VIL_MSEL_KB%(VIL_I%) 41110 NEXT 41125 DATA-3,-3,-3,-3,-3,-3,-3,-3,-3,-3,-3,-11,-3,-2,-3,-3: 41130 DATA-3,-3,-3,-3,-3,-3,-10,-9,-1,-3,-3,-3,-5,-6,-7,-8: 41135 DATA-3,-3,-3,-3,-3,-3,-3,-3,-3,-3,10,12,-1,13,15,11: 41140 DATA 0,1,2,3,4,5,6,7,8,9,-3,-3,-3,14,-3,-3: 41145 DATA-3,10,11,12,13,14,15,-3,-3,-3,-3,-3,-3,-3,-3,-3: 41150 DATA-3,-3,-3,-3,-3,-3,-3,-3,-3,-3,-3,-3,-3,-3,-3,-3: 41155 DATA-3,10,11,12,13,14,15,-3,-3,-3,-3,-3,-3,-3,-3,-3: 41160 DATA-3,-3,-3,-3,-3,-3,-3,-3,-3,-3,-3,-3,-3,-3,-3,-12: 41190 MOUSE 0:MOUSE 1,320,240,0 41195 RETURN 41205 *VIL_MSEL_M 41405 GOSUB*VIL_MSEL_BCMK 41410 GOSUB*VIL_MSEL_IN 41415 RETURN 41425 *VIL_MSEL_BCMK 41530 IF VIL_MSEL_BD%AND 2 THEN VIL_W1%=-1 ELSE VIL_W1%=1 41535 IF VIL_MSEL_BD%AND 4 THEN VIL_W2%=-1 ELSE VIL_W2%=1 41540 FOR VIL_I%=1 TO VIL_YN% 41545 FOR VIL_J%=1 TO VIL_XN% 41550 IF VIL_MSEL_BD%AND 1 THEN 41555 VIL_W0%=(VIL_J%-1)*VIL_YN%+VIL_I%-1+VIL_MSEL_BB% 41560 ELSE 41565 VIL_W0%=(VIL_I%-1)*VIL_XN%+VIL_J%-1+VIL_MSEL_BB% 41570 ENDIF 41575 VIL_MSEL_X%(VIL_W0%)=VIL_X%+(VIL_J%-1)*VIL_XL%*VIL_W1% 41580 VIL_MSEL_Y%(VIL_W0%)=VIL_Y%+(VIL_I%-1)*VIL_YL%*VIL_W2% 41585 VIL_MSEL_W%(VIL_W0%)=VIL_W%+(VIL_J%-1)*VIL_XL%*VIL_W1% 41590 VIL_MSEL_Z%(VIL_W0%)=VIL_Z%+(VIL_I%-1)*VIL_YL%*VIL_W2% 41595 NEXT 41600 NEXT 41605 RETURN 41615 *VIL_MSEL_IN 41815 VIL_W4%=MOUSE(3,0)+MOUSE(3,1) 41820 VIL_W0%=-5:VIL_W1%=-6:VIL_W2%=-7:VIL_W3%=-8 41825 IF VIL_MSEL_BD%AND 2 THEN SWAP VIL_W0%,VIL_W1% 41830 IF VIL_MSEL_BD%AND 4 THEN SWAP VIL_W2%,VIL_W3% 41835 IF VIL_MSEL_BD%AND 1 THEN SWAP VIL_W0%,VIL_W3%:SWAP VIL_W1%,VIL_W2% 41855 MOUSE 1,,,1 41860 IF VIL_MSEL_MN%THEN VIL_MSEL_BN%=VIL_MSEL_BN%(VIL_MSEL_MN%) 41865 IF VIL_MSEL_BN%<VIL_MSEL_BB%OR VIL_MSEL_BE%<VIL_MSEL_BN%THEN VIL_MSEL_BN%=VIL_MSEL_BB% 41870 IF VIL_MSEL_BC%=0 THEN GOSUB*VIL_MSEL_BC 41880 GOSUB*VIL_MSEL_KY 41890 IF MOUSE(3,1)OR VIL_MSEL_KY%=-1 THEN 41895 VIL_W4%=MOUSE(3,0) 41900 VIL_KN%=-1 41905 ELSE IF MOUSE(3,0)OR MOUSE(2,0)THEN 41910 VIL_KN%=-2 41915 VIL_MX%=MOUSE(0):VIL_MY%=MOUSE(1) 41920 IF VIL_WIN_PM%THEN 41925 IF VIL_WIN_X%<=VIL_MX%AND VIL_MX%<=VIL_WIN_W%AND VIL_WIN_Y%<=VIL_MY%AND VIL_MY%<=VIL_WIN_Z%THEN 41935 VIL_MW%=VIL_MX%-VIL_WIN_X%:VIL_MZ%=VIL_MY%-VIL_WIN_Y% 41940 FOR VIL_I%=VIL_MSEL_BB%TO VIL_MSEL_BB%+VIL_XN%-1 41945 IF VIL_MSEL_X%(VIL_I%)=<VIL_MW%AND VIL_MW%=<VIL_MSEL_W%(VIL_I%)THEN 41950 FOR VIL_J%=VIL_I%TO VIL_MSEL_BE%STEP VIL_XN% 41955 IF VIL_MSEL_Y%(VIL_J%)=<VIL_MZ%AND VIL_MZ%=<VIL_MSEL_Z%(VIL_J%)THEN 41960 VIL_KN%=VIL_J% 41965 GOSUB*VIL_MSEL_BC 41970 VIL_MSEL_BN%=VIL_KN% 41975 GOSUB*VIL_MSEL_BC 41980 VIL_I%=VIL_MSEL_BE%:VIL_J%=VIL_I% 41985 ENDIF 41990 NEXT 41995 ENDIF 42000 NEXT 42005 ENDIF 42010 ELSE 42015 VIL_MW%=-1 42020 FOR VIL_I%=VIL_MSEL_BB%TO VIL_MSEL_BB%+VIL_XN%-1 42025 IF VIL_MSEL_X%(VIL_I%)=<VIL_MX%AND VIL_MX%=<VIL_MSEL_W%(VIL_I%)THEN 42030 FOR VIL_J%=VIL_I%TO VIL_MSEL_BE%STEP VIL_XN% 42035 IF VIL_MSEL_Y%(VIL_J%)=<VIL_MY%AND VIL_MY%=<VIL_MSEL_Z%(VIL_J%)THEN 42040 VIL_KN%=VIL_J% 42045 GOSUB*VIL_MSEL_BC 42050 VIL_MSEL_BN%=VIL_KN% 42055 GOSUB*VIL_MSEL_BC 42060 VIL_I%=VIL_MSEL_BE%:VIL_J%=VIL_I% 42065 ENDIF 42070 NEXT 42075 ENDIF 42080 NEXT 42085 ENDIF 42090 ELSE 42095 IF VIL_MSEL_KY%=-4 THEN 42100 GOTO 41880 42105 ELSE IF VIL_MSEL_BB%<=VIL_MSEL_KY%AND VIL_MSEL_KY%<=VIL_MSEL_BE%THEN 42115 VIL_KN%=VIL_MSEL_KY% 42120 GOSUB*VIL_MSEL_BC:VIL_MSEL_BN%=VIL_KN%:GOSUB*VIL_MSEL_BC 42125 ELSE IF VIL_MSEL_KY%=-2 THEN 42130 VIL_KN%=VIL_MSEL_BN% 42135 ELSE IF-8<=VIL_MSEL_KY%AND VIL_MSEL_KY%<=-5 THEN 42140 GOSUB*VIL_MSEL_BC 42145 VIL_MSEL_BN%=VIL_MSEL_BN%-(VIL_MSEL_KY%=VIL_W0%)+(VIL_MSEL_KY%=VIL_W1%)+((VIL_MSEL_KY%=VIL_W2%)-(VIL_MSEL_KY%=VIL_W3%))*VIL_XN% 42150 VIL_MSEL_BN%=VIL_MSEL_BN%+(VIL_MSEL_KY%=VIL_W0%AND(VIL_MSEL_BN%MOD VIL_XN%)=1)*VIL_XN% 42155 VIL_MSEL_BN%=VIL_MSEL_BN%-(VIL_MSEL_KY%=VIL_W1%AND((VIL_MSEL_BN%+1)MOD VIL_XN%)=1)*VIL_XN% 42160 VIL_MSEL_BN%=VIL_MSEL_BN%-((VIL_MSEL_BN%<VIL_MSEL_BB%)-(VIL_MSEL_BN%>VIL_MSEL_BE%))*(VIL_MSEL_BE%-VIL_MSEL_BB%+1) 42165 GOSUB*VIL_MSEL_BC 42170 GOTO 41880 42175 ELSE 42180 VIL_KN%=-3 42185 ENDIF 42190 ENDIF 42200 VIL_MSEL_BN%(VIL_MSEL_MN%)=VIL_MSEL_BN% 42205 MOUSE 1,,,0 42210 VIL_MSEL_BC%=-1 42215 RETURN 42225 *VIL_MSEL_BC 42265 LINE(VIL_MSEL_X%(VIL_MSEL_BN%),VIL_MSEL_Y%(VIL_MSEL_BN%))-(VIL_MSEL_W%(VIL_MSEL_BN%),VIL_MSEL_Z%(VIL_MSEL_BN%)),XOR,%VIL_C%,B 42270 RETURN 42280 *VIL_MSEL_KY 42340 VIL_K$=INKEY$ 42345 IF VIL_K$<>""THEN VIL_KY%=ASC(VIL_K$):VIL_MSEL_KY%=VIL_MSEL_KB%(VIL_KY%)ELSE VIL_KY%=0:VIL_MSEL_KY%=-4 42350 RETURN 42380 *VIL_INP_INITM 42425 VIL_INP_L%=0:VIL_INP_CX%=0 42435 MOUSE 0:MOUSE 1,320,240,0 42440 RETURN 42450 *VIL_INP_STR 42565 VIL_INP_L%=LEN(VIL_A$):VIL_INP_CX%=VIL_INP_L% 42570 MOUSE 1,,,1 42580 GOSUB*VIL_INP_GPRINT 42585 GOSUB 42805 42595 VIL_K$=INKEY$ 42600 IF VIL_K$<>""THEN VIL_KY%=ASC(VIL_K$)ELSE VIL_KY%=0 42610 IF MOUSE(3,1)OR VIL_KY%=24 THEN 42615 VIL_KN%=-1 42620 ELSE IF MOUSE(3,0)OR MOUSE(2,0)THEN 42625 VIL_MX%=MOUSE(0):VIL_MY%=MOUSE(1) 42630 IF VIL_WIN_PM%THEN 42635 IF VIL_WIN_PM%AND VIL_WIN_X%<=VIL_MX%AND VIL_MX%<=VIL_WIN_W%AND VIL_WIN_Y%<=VIL_MY%AND VIL_MY%<=VIL_WIN_Z%THEN 42640 VIL_MW%=VIL_MX%-VIL_WIN_X%:VIL_MZ%=VIL_MY%-VIL_WIN_Y% 42645 ELSE 42650 VIL_MW%=-1 42655 ENDIF 42660 ENDIF 42665 VIL_KN%=-2 42670 ELSE IF VIL_KY%=13 THEN 42675 VIL_KN%=0 42680 ELSE 42685 IF VIL_KY%=0 THEN 42595 42690 GOSUB 42805 42695 IF VIL_KY%=29 AND VIL_INP_CX%>0 THEN VIL_INP_CX%=VIL_INP_CX%-1:GOTO 42585 42700 IF VIL_KY%=28 AND VIL_INP_CX%<VIL_INP_L%THEN VIL_INP_CX%=VIL_INP_CX%+1:GOTO 42585 42705 IF VIL_KY%>=32 AND VIL_KY%<>127 AND VIL_INP_L%<VIL_L%THEN 42715 VIL_A$=LEFT$(VIL_A$,VIL_INP_CX%)+VIL_K$+MID$(VIL_A$,VIL_INP_CX%+1) 42720 VIL_INP_L%=VIL_INP_L%+1:VIL_INP_CX%=VIL_INP_CX%+1 42725 ELSE IF VIL_KY%=8 AND VIL_INP_CX%>0 THEN 42730 VIL_A$=LEFT$(VIL_A$,VIL_INP_CX%-1)+MID$(VIL_A$,VIL_INP_CX%+1) 42735 VIL_INP_L%=VIL_INP_L%-1:VIL_INP_CX%=VIL_INP_CX%-1 42740 ELSE IF VIL_KY%=127 AND VIL_INP_CX%<VIL_INP_L%THEN 42745 VIL_A$=LEFT$(VIL_A$,VIL_INP_CX%)+MID$(VIL_A$,VIL_INP_CX%+2) 42750 VIL_INP_L%=VIL_INP_L%-1 42755 ELSE IF VIL_KY%=11 THEN 42760 VIL_A$="":VIL_INP_L%=0:VIL_INP_CX%=0 42765 ENDIF 42770 GOTO 42580 42775 ENDIF 42780 MOUSE 1,,,0 42785 GOSUB 42805 42790 RETURN 42805 LINE(VIL_X%+VIL_INP_CX%*8,VIL_Y%+17)-(VIL_X%+VIL_INP_CX%*8+7,VIL_Y%+17),XOR,%VIL_C% 42810 RETURN 42820 *VIL_INP_GPRINT 42880 LINE(VIL_X%,VIL_Y%)-(VIL_X%+VIL_L%*8-1,VIL_Y%+15),PSET,%VIL_CB%,BF 42885 SYMBOL(VIL_X%,VIL_Y%),VIL_A$,1,1,%VIL_C% 42890 RETURN 42900 *VIL_INP_MVWAIT 42940 VIL_W0%=MOUSE(9)+MOUSE(10):VIL_W0$=INKEY$ 42945 WHILE ABS(MOUSE(9))<10 AND ABS(MOUSE(10))<10 AND MOUSE(2,0)+MOUSE(2,1)=0 AND INKEY$="":WEND 42950 RETURN 45024 *VIL_VWM_VER 45028 VIL_VER%=200 45032 RETURN 45064 *VIL_VWM_INITM 45124 VIL_VWM_AT%=0 45164 VIL_VWM_T$="" 45168 VIL_VWM_ATB%=0:VIL_VWM_PMB%=0 45172 VIL_VWM_WX%=0:VIL_VWM_WY%=0 45176 VIL_VWM_XM%=8:VIL_VWM_YM%=14 45180 VIL_VWM_WM%=631:VIL_VWM_ZM%=471 45184 VIL_VWM_XL%=32:VIL_VWM_YL%=8 45188 VIL_VWM_WL%=624:VIL_VWM_ZL%=458 45192 VIL_VWM_XD%=1:VIL_VWM_YD%=1 45196 VIL_VWM_WD%=1:VIL_VWM_ZD%=1 45200 VIL_VWM_N%=0 45204 VIL_VWM_R%=0 45208 DIM VIL_VWM_X%(VIL_W0%),VIL_VWM_Y%(VIL_W0%) 45212 DIM VIL_VWM_W%(VIL_W0%),VIL_VWM_Z%(VIL_W0%) 45216 DIM VIL_VWM_AT%(VIL_WIN_ANMAX%) 45220 DIM VIL_VWM_T$(VIL_WIN_ANMAX%) 45224 DIM VIL_VWM_N%(VIL_WIN_ANMAX%) 45228 VIL_VWM_CB%=VIL_W4% 45232 VIL_VWM_MCX0%=1:VIL_VWM_MCY0%=2 45236 VIL_VWM_MCA0$=CHR$(&H7F,&HFF,&H3F,&HFF,&H1F,&HFF,&H0F,&HFF,&H07,&HFF,&H03,&HFF,&H01,&HFF,&H00,&HFF,&H00,&H7F,&H00,&H3F,&H00,&H1F,&H00,&HFF,&H00,&HFF,&H18,&H7F,&H38,&H7F,&HFC,&H7F) 45240 VIL_VWM_MCD0$=CHR$(&H00,&H00,&H00,&H00,&H40,&H00,&H20,&H00,&H50,&H00,&H38,&H00,&H5C,&H00,&H2E,&H00,&H5F,&H00,&H2F,&H80,&H5E,&H00,&H26,&H00,&H42,&H00,&H03,&H00,&H01,&H00,&H00,&H00) 45244 VIL_VWM_MCX1%=7:VIL_VWM_MCY1%=9 45248 VIL_VWM_MCA1$=CHR$(&HFE,&H7F,&HF0,&H0F,&HE0,&H07,&HE0,&H01,&H80,&H00,&H00,&H00,&H00,&H00,&H00,&H00,&H00,&H00,&H80,&H00,&H80,&H00,&HC0,&H01,&HC0,&H01,&HE0,&H03,&HF0,&H07,&HFC,&H1F) 45252 VIL_VWM_MCD1$=CHR$(&H00,&H00,&H01,&H80,&H0D,&HB0,&H0D,&HB0,&H0D,&HB6,&H6D,&HB6,&H6F,&HF6,&H7F,&HFE,&H7F,&HFE,&H3F,&HFE,&H3F,&HFE,&H1F,&HFC,&H1F,&HFC,&H0F,&HF8,&H03,&HE0,&H00,&H00) 45256 VIL_VWM_MCX2%=2:VIL_VWM_MCY2%=12 45260 VIL_VWM_MCA2$=CHR$(&HFF,&HE7,&HFF,&H83,&HFE,&H01,&HF8,&H01,&HE0,&H21,&HC0,&H63,&H81,&HC3,&H07,&HC7,&H0F,&H87,&H0F,&H8F,&H0F,&H0F,&H9F,&H1F,&HF0,&H1F,&HE0,&H3F,&HF0,&H7F,&HF0,&HFF) 45264 VIL_VWM_MCD2$=CHR$(&H00,&H00,&H00,&H18,&H00,&H7C,&H01,&H8C,&H06,&H08,&H18,&H08,&H20,&H10,&H40,&H10,&H40,&H20,&H40,&H20,&H40,&H40,&H00,&H40,&H00,&H80,&H0F,&H00,&H00,&H00,&H00,&H00) 45272 VIL_WIN_UB%=14:VIL_WIN_DB%=8:VIL_WIN_RB%=8:VIL_WIN_LB%=8 45284 PALETTE 1,[VIL_W1%-80+(VIL_W1%<80)*(VIL_W1%-80),VIL_W2%-80+(VIL_W2%<80)*(VIL_W2%-80),VIL_W3%-80+(VIL_W3%<80)*(VIL_W3%-80)],1 45288 PALETTE 2,[VIL_W1%,VIL_W2%,VIL_W3%],1 45292 PALETTE 3,[VIL_W1%+80+(255<VIL_W1%)*(VIL_W1%-255),VIL_W2%+80+(255<VIL_W2%)*(VIL_W2%-255),VIL_W3%+80+(255<VIL_W3%)*(VIL_W3%-255)],1 45296 PALETTE VIL_VWM_CB%,[VIL_W5%,VIL_W6%,VIL_W7%],1 45300 MOUSE 2,VIL_VWM_MCA0$,VIL_VWM_MCD0$,VIL_VWM_MCX0%,VIL_VWM_MCY0% 45308 RETURN 45316 *VIL_VWM_OP 45448 GOSUB*VIL_WIN_PMA 45452 IF VIL_WIN_AN%THEN 45456 LINE(VIL_WIN_X%(VIL_WIN_AN%)+16,VIL_WIN_Y%(VIL_WIN_AN%)-11)-(VIL_WIN_W%(VIL_WIN_AN%)-16,VIL_WIN_Y%(VIL_WIN_AN%)-4),XOR,%3,BF 45460 ENDIF 45464 IF VIL_VWM_N%THEN 45468 VIL_WIN_X%=VIL_VWM_X%(VIL_VWM_N%):VIL_WIN_Y%=VIL_VWM_Y%(VIL_VWM_N%) 45472 VIL_WIN_W%=VIL_VWM_W%(VIL_VWM_N%):VIL_WIN_Z%=VIL_VWM_Z%(VIL_VWM_N%) 45476 ENDIF 45480 GOSUB*VIL_WIN_OP 45484 IF VIL_E%THEN 45488 LINE(VIL_WIN_X%(VIL_WIN_AN%)+16,VIL_WIN_Y%(VIL_WIN_AN%)-11)-(VIL_WIN_W%(VIL_WIN_AN%)-16,VIL_WIN_Y%(VIL_WIN_AN%)-4),XOR,%3,BF 45492 ELSE 45496 VIL_VWM_AT%(VIL_WIN_AN%)=VIL_VWM_AT% 45500 VIL_VWM_T$(VIL_WIN_AN%)=VIL_VWM_T$ 45504 VIL_VWM_N%(VIL_WIN_AN%)=VIL_VWM_N% 45512 LINE(VIL_WIN_X%-8,VIL_WIN_Y%-14)-(VIL_WIN_W%+8,VIL_WIN_Z%+8),PSET,%VIL_VWM_CB%,BF 45520 LINE(VIL_WIN_X%-5,VIL_WIN_Y%-11)-(VIL_WIN_W%+5,VIL_WIN_Y%-3),PSET,%2,BF 45524 LINE(VIL_WIN_X%-5,VIL_WIN_Z%+3)-(VIL_WIN_W%+5,VIL_WIN_Z%+5),PSET,%2,BF 45528 LINE(VIL_WIN_X%-5,VIL_WIN_Y%-2)-(VIL_WIN_X%-1,VIL_WIN_Z%+2),PSET,%2,BF 45532 LINE(VIL_WIN_W%+1,VIL_WIN_Y%-2)-(VIL_WIN_W%+5,VIL_WIN_Z%+2),PSET,%2,BF 45540 CONNECT(VIL_WIN_W%+7,VIL_WIN_Y%-13)-(VIL_WIN_X%-7,VIL_WIN_Y%-13)-(VIL_WIN_X%-7,VIL_WIN_Z%+7),%3 45544 CONNECT(VIL_WIN_W%+6,VIL_WIN_Y%-12)-(VIL_WIN_X%-6,VIL_WIN_Y%-12)-(VIL_WIN_X%-6,VIL_WIN_Z%+6),%3 45548 CONNECT(VIL_WIN_X%-6,VIL_WIN_Z%+7)-(VIL_WIN_W%+7,VIL_WIN_Z%+7)-(VIL_WIN_W%+7,VIL_WIN_Y%-12),%1 45552 CONNECT(VIL_WIN_X%-5,VIL_WIN_Z%+6)-(VIL_WIN_W%+6,VIL_WIN_Z%+6)-(VIL_WIN_W%+6,VIL_WIN_Y%-11),%1 45560 CONNECT(VIL_WIN_W%+1,VIL_WIN_Y%-2)-(VIL_WIN_X%-2,VIL_WIN_Y%-2)-(VIL_WIN_X%-2,VIL_WIN_Z%+1),%1 45564 CONNECT(VIL_WIN_W%,VIL_WIN_Y%-1)-(VIL_WIN_X%-1,VIL_WIN_Y%-1)-(VIL_WIN_X%-1,VIL_WIN_Z%),%1 45568 CONNECT(VIL_WIN_X%-2,VIL_WIN_Z%+2)-(VIL_WIN_W%+2,VIL_WIN_Z%+2)-(VIL_WIN_W%+2,VIL_WIN_Y%-2),%3 45572 CONNECT(VIL_WIN_X%-1,VIL_WIN_Z%+1)-(VIL_WIN_W%+1,VIL_WIN_Z%+1)-(VIL_WIN_W%+1,VIL_WIN_Y%-1),%3 45580 IF(VIL_VWM_AT%AND 2)=2 THEN 45584 LINE(VIL_WIN_X%-5,VIL_WIN_Y%-11)-(VIL_WIN_X%+3,VIL_WIN_Y%-3),PSET,%1,B 45588 LINE(VIL_WIN_X%-5,VIL_WIN_Y%-11)-(VIL_WIN_X%+3,VIL_WIN_Y%-3),PSET,%1 45592 LINE(VIL_WIN_X%+3,VIL_WIN_Y%-11)-(VIL_WIN_X%-5,VIL_WIN_Y%-3),PSET,%1 45596 ENDIF 45604 IF(VIL_VWM_AT%AND 4)=4 THEN 45608 LINE(VIL_WIN_X%+5,VIL_WIN_Y%-11)-(VIL_WIN_X%+13,VIL_WIN_Y%-3),PSET,%1,B 45612 LINE(VIL_WIN_X%+13,VIL_WIN_Y%-11)-(VIL_WIN_X%+5,VIL_WIN_Y%-3),PSET,%1 45616 ENDIF 45624 IF(VIL_VWM_AT%AND 1)=1 THEN 45628 LINE(VIL_WIN_W%-13,VIL_WIN_Y%-11)-(VIL_WIN_W%-5,VIL_WIN_Y%-3),PSET,%1,B 45632 LINE(VIL_WIN_W%-13,VIL_WIN_Y%-8)-(VIL_WIN_W%-5,VIL_WIN_Y%-8),PSET,%1 45636 LINE(VIL_WIN_W%-13,VIL_WIN_Y%-6)-(VIL_WIN_W%-5,VIL_WIN_Y%-6),PSET,%1 45640 ENDIF 45648 IF(VIL_VWM_AT%AND 16)=16 THEN 45652 LINE(VIL_WIN_W%-3,VIL_WIN_Y%-11)-(VIL_WIN_W%+5,VIL_WIN_Y%-3),PSET,%1,B 45656 LINE(VIL_WIN_W%-3,VIL_WIN_Y%-8)-(VIL_WIN_W%+2,VIL_WIN_Y%-3),PSET,%1,B 45660 ENDIF 45668 VIL_W0%=INT(VIL_WIN_W%-VIL_WIN_X%-36)/5 45672 IF VIL_W0%>0 THEN 45676 SYMBOL(VIL_WIN_X%+18,VIL_WIN_Y%-10),LEFT$(VIL_VWM_T$,VIL_W0%),.5!,.5!,%1,,,,1 45680 ENDIF 45688 LINE(VIL_WIN_X%+16,VIL_WIN_Y%-11)-(VIL_WIN_W%-16,VIL_WIN_Y%-4),XOR,%3,BF 45692 ENDIF 45700 GOSUB*VIL_WIN_PMR 45704 RETURN 45712 *VIL_VWM_CL 45788 IF VIL_VWM_N%THEN 45792 VIL_VWM_X%(VIL_VWM_N%)=VIL_WIN_X%:VIL_VWM_Y%(VIL_VWM_N%)=VIL_WIN_Y% 45796 VIL_VWM_W%(VIL_VWM_N%)=VIL_WIN_W%:VIL_VWM_Z%(VIL_VWM_N%)=VIL_WIN_Z% 45800 ENDIF 45804 GOSUB*VIL_WIN_PMA 45808 GOSUB*VIL_WIN_CL 45812 VIL_VWM_AT%=VIL_VWM_AT%(VIL_WIN_AN%) 45816 VIL_VWM_T$=VIL_VWM_T$(VIL_WIN_AN%) 45820 VIL_VWM_N%=VIL_VWM_N%(VIL_WIN_AN%) 45824 IF VIL_WIN_AN%THEN 45828 LINE(VIL_WIN_X%+16,VIL_WIN_Y%-11)-(VIL_WIN_W%-16,VIL_WIN_Y%-4),XOR,%3,BF 45832 ENDIF 45836 GOSUB*VIL_WIN_PMR 45840 RETURN 45848 *VIL_VWM_CLDMY 45924 IF VIL_VWM_N%THEN 45928 VIL_VWM_X%(VIL_VWM_N%)=VIL_WIN_X%:VIL_VWM_Y%(VIL_VWM_N%)=VIL_WIN_Y% 45932 VIL_VWM_W%(VIL_VWM_N%)=VIL_WIN_W%:VIL_VWM_Z%(VIL_VWM_N%)=VIL_WIN_Z% 45936 ENDIF 45940 GOSUB*VIL_WIN_PMA 45944 GOSUB*VIL_WIN_CLDMY 45948 LINE(VIL_WIN_X%(VIL_WIN_AN%+1)+16,VIL_WIN_Y%(VIL_WIN_AN%+1)-11)-(VIL_WIN_W%(VIL_WIN_AN%+1)-16,VIL_WIN_Y%(VIL_WIN_AN%+1)-4),XOR,%3,BF 45952 VIL_VWM_AT%=VIL_VWM_AT%(VIL_WIN_AN%) 45956 VIL_VWM_T$=VIL_VWM_T$(VIL_WIN_AN%) 45960 VIL_VWM_N%=VIL_VWM_N%(VIL_WIN_AN%) 45964 IF VIL_WIN_AN%THEN 45968 LINE(VIL_WIN_X%+16,VIL_WIN_Y%-11)-(VIL_WIN_W%-16,VIL_WIN_Y%-4),XOR,%3,BF 45972 ENDIF 45976 GOSUB*VIL_WIN_PMR 45980 RETURN 45988 *VIL_VWM_CLALL 46020 WHILE VIL_WIN_AN% 46024 GOSUB*VIL_VWM_CL 46028 WEND 46032 RETURN 46040 *VIL_VWM_CLS 46068 LINE(0,0)-(VIL_WIN_W%-VIL_WIN_X%,VIL_WIN_Z%-VIL_WIN_Y%),PSET,%VIL_VWM_CB%,BF 46072 RETURN 46080 *VIL_VWM_CHECK 46148 VIL_VWM_R%=0 46152 IF VIL_KN%=-2 THEN 46156 GOSUB*VIL_VWM_WIN 46160 ELSE IF VIL_KN%=-3 AND VIL_KY%=27 THEN 46164 VIL_WIN_X%=VIL_WIN_W%+(VIL_WIN_W%-582)*(VIL_WIN_W%>582) 46168 VIL_WIN_Y%=VIL_WIN_Y%-32+(VIL_WIN_Y%-46)*(VIL_WIN_Y%<46)+(VIL_WIN_Y%-406)*(VIL_WIN_Y%>406) 46176 GOSUB*VIL_VWM_MENU 46180 ENDIF 46184 RETURN 46192 *VIL_VWM_WIN 46240 VIL_VWM_R%=0 46244 IF(VIL_VWM_AT%AND 2)=2 AND VIL_WIN_X%-6<VIL_MX%AND VIL_MX%<VIL_WIN_X%+4 AND VIL_WIN_Y%-12<VIL_MY%AND VIL_MY%<VIL_WIN_Y%-2 THEN 46248 GOSUB*VIL_VWM_CLOSE 46252 ELSE IF(VIL_VWM_AT%AND 4)=4 AND VIL_WIN_X%+4<VIL_MX%AND VIL_MX%<VIL_WIN_X%+14 AND VIL_WIN_Y%-12<VIL_MY%AND VIL_MY%<VIL_WIN_Y%-2 THEN 46256 GOSUB*VIL_VWM_HIDE 46260 ELSE IF(VIL_VWM_AT%AND 1)=1 AND VIL_WIN_W%-14<VIL_MX%AND VIL_MX%<VIL_WIN_W%-4 AND VIL_WIN_Y%-12<VIL_MY%AND VIL_MY%<VIL_WIN_Y%-2 THEN 46264 VIL_WIN_X%=VIL_WIN_W%+(VIL_WIN_W%-582)*(VIL_WIN_W%>582) 46268 VIL_WIN_Y%=VIL_WIN_Y%-32+(VIL_WIN_Y%-46)*(VIL_WIN_Y%<46)+(VIL_WIN_Y%-406)*(VIL_WIN_Y%>406) 46276 GOSUB*VIL_VWM_MENU 46280 ELSE IF(VIL_VWM_AT%AND 16)=16 AND VIL_WIN_W%-4<VIL_MX%AND VIL_MX%<VIL_WIN_W%+6 AND VIL_WIN_Y%-12<VIL_MY%AND VIL_MY%<VIL_WIN_Y%-2 THEN 46284 GOSUB*VIL_VWM_RESIZE 46288 ELSE IF(VIL_VWM_AT%AND 8)=8 AND VIL_WIN_X%-6<VIL_MX%AND VIL_MX%<VIL_WIN_W%+6 AND VIL_WIN_Y%-12<VIL_MY%AND VIL_MY%<VIL_WIN_Y%-2 THEN 46292 GOSUB*VIL_VWM_MOVE 46296 ENDIF 46300 RETURN 46308 *VIL_VWM_MENU 46372 GOSUB*VIL_WIN_PMA 46376 LINE(VIL_WIN_X%(VIL_WIN_AN%)+16,VIL_WIN_Y%(VIL_WIN_AN%)-11)-(VIL_WIN_W%(VIL_WIN_AN%)-16,VIL_WIN_Y%(VIL_WIN_AN%)-4),XOR,%3,BF 46380 VIL_VWM_ATB%=VIL_VWM_AT% 46384 VIL_WIN_W%=VIL_WIN_X%+49:VIL_WIN_Z%=VIL_WIN_Y%+97 46388 VIL_VWM_T$="VWM":VIL_VWM_AT%=0:VIL_VWM_N%=0 46392 GOSUB*VIL_VWM_OP 46396 SYMBOL(5,0),"<VWM>",1,1,6 46400 SYMBOL(1,20),"CLOSE",1,1,%1-((VIL_VWM_ATB%AND 2)=2)*2 46404 SYMBOL(1,36),"HIDE",1,1,%1-((VIL_VWM_ATB%AND 4)=4)*2 46408 SYMBOL(1,52),"MOVE",1,1,%1-((VIL_VWM_ATB%AND 8)=8)*2 46412 SYMBOL(1,68),"RESIZE",1,1,%1-((VIL_VWM_ATB%AND 16)=16)*2 46416 SYMBOL(1,84),"<INFO>",1,1,%3 46424 VIL_X%=1:VIL_Y%=20:VIL_W%=VIL_X%+47:VIL_Z%=VIL_Y%+14 46428 VIL_YL%=16:VIL_XN%=1:VIL_YN%=5:VIL_MSEL_BD%=0:VIL_C%=15 46432 VIL_MSEL_BC%=0:VIL_MSEL_MN%=1:VIL_MSEL_BB%=1:VIL_MSEL_BE%=5 46436 GOSUB*VIL_MSEL_M 46440 IF VIL_KN%=-3 OR(0<VIL_KN%AND VIL_KN%<5 AND(VIL_VWM_ATB%AND 2^VIL_KN%)=0) THEN 46436 46444 GOSUB*VIL_VWM_CL 46448 GOSUB*VIL_WIN_PMA 46452 LINE(VIL_WIN_X%(VIL_WIN_AN%)+16,VIL_WIN_Y%(VIL_WIN_AN%)-11)-(VIL_WIN_W%(VIL_WIN_AN%)-16,VIL_WIN_Y%(VIL_WIN_AN%)-4),XOR,%3,BF 46456 GOSUB*VIL_WIN_PMR 46460 IF VIL_KN%<1 THEN RETURN 46468 ON VIL_KN%GOTO 46476,46488,46500,46536,46572 46476 GOSUB*VIL_VWM_CLOSE 46480 RETURN 46488 IF VIL_KY%THEN GOSUB*VIL_VWM_KHIDE ELSE GOSUB*VIL_VWM_HIDE 46492 RETURN 46500 IF VIL_KY%THEN 46504 GOSUB*VIL_VWM_KMOVE 46508 ELSE 46512 VIL_MX%=(VIL_WIN_X%+VIL_WIN_W%)\2:VIL_MY%=VIL_WIN_Y%-4 46516 MOUSE 1,VIL_MX%,VIL_MY% 46520 GOSUB*VIL_VWM_MOVE 46524 ENDIF 46528 RETURN 46536 IF VIL_KY%THEN 46540 GOSUB*VIL_VWM_KRESIZE 46544 ELSE 46548 VIL_MX%=VIL_WIN_W%:VIL_MY%=VIL_WIN_Y%-6 46552 MOUSE 1,VIL_MX%,VIL_MY% 46556 GOSUB*VIL_VWM_RESIZE 46560 ENDIF 46564 RETURN 46572 VIL_WIN_X%=VIL_WIN_X%+(VIL_WIN_X%-448)*(VIL_WIN_X%>448) 46576 VIL_WIN_Y%=VIL_WIN_Y%+(VIL_WIN_Y%-380)*(VIL_WIN_Y%>380) 46580 GOSUB*VIL_VWM_INF 46584 RETURN 46592 *VIL_VWM_INF 46624 VIL_WIN_W%=VIL_WIN_X%+183:VIL_WIN_Z%=VIL_WIN_Y%+91 46628 VIL_VWM_T$="VWM INFORMATION":VIL_VWM_AT%=0:VIL_VWM_N%=0 46632 VIL_E%=0 46636 GOSUB*VIL_VWM_OP 46640 IF VIL_E%=0 THEN 46648 SYMBOL(8,8),"POSITION:("+FNVIL_P2S0$(VIL_WIN_X%(VIL_WIN_AN%-1),3)+","+FNVIL_P2S0$(VIL_WIN_Y%(VIL_WIN_AN%-1),3)+")",1,1,4 46656 SYMBOL(8,28),"SIZE : "+FNVIL_P2S0$(VIL_WIN_W%(VIL_WIN_AN%-1)-VIL_WIN_X%(VIL_WIN_AN%-1)+1,3)+"×"+FNVIL_P2S0$(VIL_WIN_Z%(VIL_WIN_AN%-1)-VIL_WIN_Y%(VIL_WIN_AN%-1)+1,3),1,1,4 46664 SYMBOL(8,48),"WINDOW : "+FNVIL_P2S0$(VIL_WIN_AN%-1,3)+"/"+FNVIL_P2S0$(VIL_WIN_ANMAX%,3),1,1,4 46672 SYMBOL(8,68),"FREE : "+FNVIL_P2S0$((VIL_WIN_BFMAX&-VIL_WIN_BFO&(VIL_WIN_AN%-1))\512,4)+"K/"+FNVIL_P2S0$(VIL_WIN_BFMAX&\512,4)+"K",1,1,4 46676 GOSUB*VIL_INP_MVWAIT 46680 GOSUB*VIL_VWM_CL 46684 ENDIF 46688 RETURN 46696 *VIL_VWM_MOVE 46748 MOUSE 2,VIL_VWM_MCA1$,VIL_VWM_MCD1$,VIL_VWM_MCX1%,VIL_VWM_MCY1% 46752 MOUSE 1,VIL_MX%,VIL_MY%,1 46756 VIL_VWM_PMB%=VIL_WIN_PM%:GOSUB*VIL_WIN_PMA 46760 VIL_WIN_X%=VIL_WIN_X%-8:VIL_WIN_Y%=VIL_WIN_Y%-14 46764 VIL_WIN_W%=VIL_WIN_W%+8:VIL_WIN_Z%=VIL_WIN_Z%+8 46768 MOUSE 4,VIL_VWM_XM%+VIL_MX%-VIL_WIN_X%-8,VIL_VWM_YM%+VIL_MY%-VIL_WIN_Y%-14,VIL_VWM_WM%+VIL_MX%-VIL_WIN_W%+8,VIL_VWM_ZM%+VIL_MY%-VIL_WIN_Z%+8 46772 VIL_W0%=0:VIL_W1%=0:VIL_W2%=0:VIL_W3%=0 46776 VIL_WIN_W%=VIL_WIN_W%-VIL_WIN_X%:VIL_WIN_Z%=VIL_WIN_Z%-VIL_WIN_Y% 46780 LINE(VIL_WIN_X%,VIL_WIN_Y%)-STEP(VIL_WIN_W%,VIL_WIN_Z%),XOR,7,B 46784 WHILE MOUSE(2,0) 46788 VIL_MX%=MOUSE(9):VIL_MY%=MOUSE(10) 46792 IF VIL_MX%OR VIL_MY%THEN 46796 LINE(VIL_WIN_X%+VIL_W2%,VIL_WIN_Y%+VIL_W3%)-STEP(VIL_WIN_W%,VIL_WIN_Z%),XOR,7,B 46800 VIL_W0%=VIL_W0%+VIL_MX%:VIL_W1%=VIL_W1%+VIL_MY% 46804 VIL_W2%=VIL_W0%-VIL_W0%MOD VIL_VWM_XD% 46808 VIL_W3%=VIL_W1%-VIL_W1%MOD VIL_VWM_YD% 46812 LINE(VIL_WIN_X%+VIL_W2%,VIL_WIN_Y%+VIL_W3%)-STEP(VIL_WIN_W%,VIL_WIN_Z%),XOR,7,B 46816 ENDIF 46820 WEND 46824 VIL_WIN_X%=VIL_WIN_X%+VIL_W2%:VIL_WIN_Y%=VIL_WIN_Y%+VIL_W3% 46828 LINE(VIL_WIN_X%,VIL_WIN_Y%)-STEP(VIL_WIN_W%,VIL_WIN_Z%),XOR,7,B 46836 IF MOUSE(2,1)THEN 46840 VIL_WIN_X%=VIL_WIN_X%(VIL_WIN_AN%) 46844 VIL_WIN_Y%=VIL_WIN_Y%(VIL_WIN_AN%) 46848 VIL_WIN_W%=VIL_WIN_W%(VIL_WIN_AN%) 46852 VIL_WIN_Z%=VIL_WIN_Z%(VIL_WIN_AN%) 46856 ELSE 46860 VIL_WIN_X%=VIL_WIN_X%+8:VIL_WIN_Y%=VIL_WIN_Y%+14 46868 GOSUB*VIL_VWM_MV 46872 ENDIF 46876 MOUSE 2,VIL_VWM_MCA0$,VIL_VWM_MCD0$,VIL_VWM_MCX0%,VIL_VWM_MCY0% 46880 MOUSE 4,0,0,639,479 46884 IF VIL_VWM_PMB%THEN GOSUB*VIL_WIN_PMR 46888 RETURN 46896 *VIL_VWM_KMOVE 46940 WHILE INKEY$<>"":WEND 46944 VIL_VWM_PMB%=VIL_WIN_PM%:GOSUB*VIL_WIN_PMA 46948 VIL_WIN_X%=VIL_WIN_X%-8:VIL_WIN_Y%=VIL_WIN_Y%-14 46952 VIL_WIN_W%=VIL_WIN_W%-VIL_WIN_X%+8:VIL_WIN_Z%=VIL_WIN_Z%-VIL_WIN_Y%+8 46956 LINE(VIL_WIN_X%,VIL_WIN_Y%)-STEP(VIL_WIN_W%,VIL_WIN_Z%),XOR,7,B 46960 VIL_MSEL_KY%=0 46964 WHILE VIL_MSEL_KY%<>-1 AND VIL_MSEL_KY%<>-2 46968 GOSUB*VIL_MSEL_KY 46972 IF VIL_MSEL_KY%=-4 THEN 46968 46976 LINE(VIL_WIN_X%,VIL_WIN_Y%)-STEP(VIL_WIN_W%,VIL_WIN_Z%),XOR,7,B 46980 VIL_WIN_X%=VIL_WIN_X%+((VIL_MSEL_KY%=-6)-(VIL_MSEL_KY%=-5))*VIL_VWM_XD% 46984 VIL_WIN_X%=VIL_WIN_X%-((VIL_WIN_X%+8<VIL_VWM_XM%)-(VIL_VWM_WM%<VIL_WIN_X%+VIL_WIN_W%-8))*VIL_VWM_XD% 46988 VIL_WIN_X%=VIL_WIN_X%+((VIL_MSEL_KY%=-10)-(VIL_MSEL_KY%=-9))*VIL_VWM_XD%*8 46996 VIL_WIN_X%=VIL_WIN_X%-((VIL_WIN_X%+8<VIL_VWM_XM%)-(VIL_VWM_WM%<VIL_WIN_X%+VIL_WIN_W%-8))*VIL_VWM_XD%*8 47004 VIL_WIN_Y%=VIL_WIN_Y%+((VIL_MSEL_KY%=-7)-(VIL_MSEL_KY%=-8))*VIL_VWM_YD% 47008 VIL_WIN_Y%=VIL_WIN_Y%-((VIL_WIN_Y%+14<VIL_VWM_YM%)-(VIL_VWM_ZM%<VIL_WIN_Y%+VIL_WIN_Z%-8))*VIL_VWM_YD% 47012 VIL_WIN_Y%=VIL_WIN_Y%+((VIL_MSEL_KY%=-11)-(VIL_MSEL_KY%=-12))*VIL_VWM_YD%*8 47020 VIL_WIN_Y%=VIL_WIN_Y%-((VIL_WIN_Y%+14<VIL_VWM_YM%)-(VIL_VWM_ZM%<VIL_WIN_Y%+VIL_WIN_Z%-8))*VIL_VWM_YD%*8 47024 LINE(VIL_WIN_X%,VIL_WIN_Y%)-STEP(VIL_WIN_W%,VIL_WIN_Z%),XOR,7,B 47028 WEND 47032 LINE(VIL_WIN_X%,VIL_WIN_Y%)-STEP(VIL_WIN_W%,VIL_WIN_Z%),XOR,7,B 47040 IF VIL_MSEL_KY%=-2 THEN 47044 VIL_WIN_X%=VIL_WIN_X%+8:VIL_WIN_Y%=VIL_WIN_Y%+14 47048 GOSUB*VIL_VWM_MV 47052 ELSE 47056 VIL_WIN_X%=VIL_WIN_X%(VIL_WIN_AN%) 47060 VIL_WIN_Y%=VIL_WIN_Y%(VIL_WIN_AN%) 47064 VIL_WIN_W%=VIL_WIN_W%(VIL_WIN_AN%) 47068 VIL_WIN_Z%=VIL_WIN_Z%(VIL_WIN_AN%) 47072 ENDIF 47076 IF VIL_VWM_PMB%THEN GOSUB*VIL_WIN_PMR 47080 RETURN 47088 *VIL_VWM_MV 47148 VIL_E%=0 47152 GET@A(VIL_WIN_X%(VIL_WIN_AN%)-8,VIL_WIN_Y%(VIL_WIN_AN%)-14)-(VIL_WIN_W%(VIL_WIN_AN%)+8,VIL_WIN_Z%(VIL_WIN_AN%)+8),VIL_WIN_BF%,VIL_WIN_BFO&(VIL_WIN_AN%) 47156 IF VIL_E%=0 THEN 47160 VIL_WIN_W%=VIL_WIN_X%+VIL_WIN_W%(VIL_WIN_AN%)-VIL_WIN_X%(VIL_WIN_AN%) 47164 VIL_WIN_Z%=VIL_WIN_Y%+VIL_WIN_Z%(VIL_WIN_AN%)-VIL_WIN_Y%(VIL_WIN_AN%) 47168 PUT@A(VIL_WIN_X%(VIL_WIN_AN%)-8,VIL_WIN_Y%(VIL_WIN_AN%)-14)-(VIL_WIN_W%(VIL_WIN_AN%)+8,VIL_WIN_Z%(VIL_WIN_AN%)+8),VIL_WIN_BF%,,,,,VIL_WIN_BFO&(VIL_WIN_AN%-1) 47172 GET@A(VIL_WIN_X%-8,VIL_WIN_Y%-14)-(VIL_WIN_W%+8,VIL_WIN_Z%+8),VIL_WIN_BF%,VIL_WIN_BFO&(VIL_WIN_AN%-1) 47176 PUT@A(VIL_WIN_X%-8,VIL_WIN_Y%-14)-(VIL_WIN_W%+8,VIL_WIN_Z%+8),VIL_WIN_BF%,,,,,VIL_WIN_BFO&(VIL_WIN_AN%) 47184 VIL_WIN_X%(VIL_WIN_AN%)=VIL_WIN_X% 47188 VIL_WIN_Y%(VIL_WIN_AN%)=VIL_WIN_Y% 47192 VIL_WIN_W%(VIL_WIN_AN%)=VIL_WIN_W% 47196 VIL_WIN_Z%(VIL_WIN_AN%)=VIL_WIN_Z% 47200 VIL_VWM_R%=8 47204 ELSE 47208 VIL_WIN_X%=VIL_WIN_X%(VIL_WIN_AN%) 47212 VIL_WIN_Y%=VIL_WIN_Y%(VIL_WIN_AN%) 47216 VIL_VWM_R%=0 47220 ENDIF 47224 RETURN 47232 *VIL_VWM_CLOSE 47264 GOSUB*VIL_VWM_CL 47268 VIL_VWM_R%=2 47272 RETURN 47280 *VIL_VWM_HIDE 47324 VIL_VWM_PMB%=VIL_WIN_PM%:GOSUB*VIL_WIN_PMA 47328 GOSUB*VIL_VWM_HD0 47332 IF VIL_E%=0 THEN 47336 WHILE MOUSE(2,0):WEND 47340 GOSUB*VIL_VWM_HD1 47344 VIL_VWM_R%=4 47348 ELSE 47352 VIL_VWM_R%=0 47356 ENDIF 47360 IF VIL_VWM_PMB%THEN GOSUB*VIL_WIN_PMR 47364 RETURN 47372 *VIL_VWM_KHIDE 47416 WHILE INKEY$<>"":WEND 47420 VIL_VWM_PMB%=VIL_WIN_PM%:GOSUB*VIL_WIN_PMA 47424 GOSUB*VIL_VWM_HD0 47428 IF VIL_E%=0 THEN 47432 WHILE INKEY$="":WEND 47436 GOSUB*VIL_VWM_HD1 47440 VIL_VWM_R%=4 47444 ENDIF 47448 IF VIL_VWM_PMB%THEN GOSUB*VIL_WIN_PMR 47452 RETURN 47460 *VIL_VWM_HD0 47496 VIL_E%=0 47500 GET@A(VIL_WIN_X%(VIL_WIN_AN%)-8,VIL_WIN_Y%(VIL_WIN_AN%)-14)-(VIL_WIN_W%(VIL_WIN_AN%)+8,VIL_WIN_Z%(VIL_WIN_AN%)+8),VIL_WIN_BF%,VIL_WIN_BFO&(VIL_WIN_AN%) 47504 IF VIL_E%=0 THEN 47508 PUT@A(VIL_WIN_X%(VIL_WIN_AN%)-8,VIL_WIN_Y%(VIL_WIN_AN%)-14)-(VIL_WIN_W%(VIL_WIN_AN%)+8,VIL_WIN_Z%(VIL_WIN_AN%)+8),VIL_WIN_BF%,,,,,VIL_WIN_BFO&(VIL_WIN_AN%-1) 47512 ENDIF 47516 RETURN 47524 *VIL_VWM_HD1 47556 PUT@A(VIL_WIN_X%(VIL_WIN_AN%)-8,VIL_WIN_Y%(VIL_WIN_AN%)-14)-(VIL_WIN_W%(VIL_WIN_AN%)+8,VIL_WIN_Z%(VIL_WIN_AN%)+8),VIL_WIN_BF%,,,,,VIL_WIN_BFO&(VIL_WIN_AN%) 47560 RETURN 47568 *VIL_VWM_HD2 47600 GET@A(VIL_WIN_X%(VIL_WIN_AN%)-8,VIL_WIN_Y%(VIL_WIN_AN%)-14)-(VIL_WIN_W%(VIL_WIN_AN%)+8,VIL_WIN_Z%(VIL_WIN_AN%)+8),VIL_WIN_BF%,VIL_WIN_BFO&(VIL_WIN_AN%-1) 47604 PUT@A(VIL_WIN_X%(VIL_WIN_AN%)-8,VIL_WIN_Y%(VIL_WIN_AN%)-14)-(VIL_WIN_W%(VIL_WIN_AN%)+8,VIL_WIN_Z%(VIL_WIN_AN%)+8),VIL_WIN_BF%,,,,,VIL_WIN_BFO&(VIL_WIN_AN%) 47608 RETURN 47616 *VIL_VWM_RESIZE 47676 MOUSE 2,VIL_VWM_MCA2$,VIL_VWM_MCD2$,VIL_VWM_MCX2%,VIL_VWM_MCY2% 47680 MOUSE 1,VIL_MX%,VIL_MY%,1 47684 VIL_VWM_PMB%=VIL_WIN_PM%:GOSUB*VIL_WIN_PMA 47700 VIL_WIN_X%=VIL_WIN_X%-8:VIL_WIN_Y%=VIL_WIN_Y%-14 47704 VIL_WIN_W%=VIL_WIN_W%+8:VIL_WIN_Z%=VIL_WIN_Z%+8 47708 VIL_W0%=VIL_WIN_W%-VIL_VWM_WL%-7-VIL_VWM_XM% 47712 VIL_W1%=VIL_WIN_Z%-VIL_VWM_ZL%-7-VIL_VWM_YM% 47716 VIL_W2%=VIL_WIN_X%+VIL_VWM_WL%+7-VIL_VWM_WM% 47720 VIL_W3%=VIL_WIN_Y%+VIL_VWM_ZL%+13-VIL_VWM_ZM% 47736 MOUSE 4,VIL_VWM_XM%-VIL_W0%*(VIL_W0%>0)-8,VIL_VWM_YM%-VIL_W1%*(VIL_W1%>0)-14,VIL_VWM_WM%-VIL_W2%*(VIL_W2%<0)+8,VIL_VWM_ZM%-VIL_W3%*(VIL_W3%<0)+8 47744 VIL_W0%=0:VIL_W1%=0 47748 LINE(VIL_WIN_X%,VIL_WIN_Y%)-(VIL_WIN_W%,VIL_WIN_Z%),XOR,7,B 47752 WHILE MOUSE(2,0) 47756 IF MOUSE(9)OR MOUSE(10)THEN 47760 LOCATE 0,0:PRINT VIL_W0%;VIL_W1% 47764 VIL_MX%=MOUSE(0):VIL_MY%=MOUSE(1) 47768 LINE(VIL_WIN_X%,VIL_WIN_Y%)-(VIL_WIN_W%,VIL_WIN_Z%),XOR,7,B 47772 IF VIL_MX%<=VIL_WIN_X%(VIL_WIN_AN%)-8 THEN 47776 VIL_WIN_X%=VIL_MX%+(VIL_WIN_X%-VIL_MX%)MOD VIL_VWM_WD% 47780 VIL_WIN_W%=VIL_WIN_W%(VIL_WIN_AN%)+8:VIL_W0%=1 47784 ELSE IF VIL_MX%>=VIL_WIN_W%(VIL_WIN_AN%)+8 THEN 47788 VIL_WIN_W%=VIL_MX%-(VIL_MX%-VIL_WIN_W%)MOD VIL_VWM_WD% 47792 VIL_WIN_X%=VIL_WIN_X%(VIL_WIN_AN%)-8:VIL_W0%=2 47796 ELSE 47800 IF VIL_W0%=1 THEN 47804 VIL_W2%=VIL_WIN_W%-VIL_VWM_XL%-15-VIL_MX% 47808 VIL_W2%=VIL_MX%-VIL_W2%*(VIL_W2%<0) 47812 VIL_WIN_X%=VIL_W2%+(VIL_WIN_X%-VIL_W2%)MOD VIL_VWM_WD% 47816 ELSE IF VIL_W0%=2 THEN 47820 VIL_W2%=VIL_WIN_X%+VIL_VWM_XL%+15-VIL_MX% 47824 VIL_W2%=VIL_MX%-VIL_W2%*(VIL_W2%>0) 47828 VIL_WIN_W%=VIL_W2%-(VIL_W2%-VIL_WIN_W%)MOD VIL_VWM_WD% 47832 ENDIF 47836 ENDIF 47844 IF VIL_MY%<=VIL_WIN_Y%(VIL_WIN_AN%)-14 THEN 47848 VIL_WIN_Y%=VIL_MY%+(VIL_WIN_Y%-VIL_MY%)MOD VIL_VWM_ZD% 47852 VIL_WIN_Z%=VIL_WIN_Z%(VIL_WIN_AN%)+8:VIL_W1%=1 47856 ELSE IF VIL_MY%>=VIL_WIN_Z%(VIL_WIN_AN%)+8 THEN 47860 VIL_WIN_Z%=VIL_MY%-(VIL_MY%-VIL_WIN_Z%)MOD VIL_VWM_ZD% 47864 VIL_WIN_Y%=VIL_WIN_Y%(VIL_WIN_AN%)-14:VIL_W1%=2 47868 ELSE 47872 IF VIL_W1%=1 THEN 47876 VIL_W2%=VIL_WIN_Z%-VIL_VWM_YL%-21-VIL_MY% 47880 VIL_W2%=VIL_MY%-VIL_W2%*(VIL_W2%<0) 47884 VIL_WIN_Y%=VIL_W2%+(VIL_WIN_Y%-VIL_W2%)MOD VIL_VWM_ZD 47888 ELSE IF VIL_W1%=2 THEN 47892 VIL_W2%=VIL_WIN_Y%+VIL_VWM_YL%+21-VIL_MY% 47896 VIL_W2%=VIL_MY%-VIL_W2%*(VIL_W2%>0) 47900 VIL_WIN_Z%=VIL_W2%-(VIL_W2%-VIL_WIN_Z%)MOD VIL_VWM_ZD% 47904 ENDIF 47908 ENDIF 47912 LINE(VIL_WIN_X%,VIL_WIN_Y%)-(VIL_WIN_W%,VIL_WIN_Z%),XOR,7,B 47916 ENDIF 47920 WEND 47924 LINE(VIL_WIN_X%,VIL_WIN_Y%)-(VIL_WIN_W%,VIL_WIN_Z%),XOR,7,B 47928 IF MOUSE(2,1)THEN 47932 VIL_WIN_X%=VIL_WIN_X%(VIL_WIN_AN%) 47936 VIL_WIN_Y%=VIL_WIN_Y%(VIL_WIN_AN%) 47940 VIL_WIN_W%=VIL_WIN_W%(VIL_WIN_AN%) 47944 VIL_WIN_Z%=VIL_WIN_Z%(VIL_WIN_AN%) 47948 ELSE 47952 VIL_WIN_X%=VIL_WIN_X%+8:VIL_WIN_Y%=VIL_WIN_Y%+14 47956 VIL_WIN_W%=VIL_WIN_W%-8:VIL_WIN_Z%=VIL_WIN_Z%-8 47960 GOSUB*VIL_VWM_RS 47964 ENDIF 47968 MOUSE 2,VIL_VWM_MCA0$,VIL_VWM_MCD0$,VIL_VWM_MCX0%,VIL_VWM_MCY0% 47972 MOUSE 4,0,0,639,479 47976 IF VIL_VWM_PMB%THEN GOSUB*VIL_WIN_PMR 47980 RETURN 47988 *VIL_VWM_KRESIZE 48056 WHILE INKEY$<>"":WEND 48060 VIL_VWM_PMB%=VIL_WIN_PM%:GOSUB*VIL_WIN_PMA 48076 VIL_WIN_X%=VIL_WIN_X%-8:VIL_WIN_Y%=VIL_WIN_Y%-14 48080 VIL_WIN_W%=VIL_WIN_W%+8:VIL_WIN_Z%=VIL_WIN_Z%+8 48084 VIL_W2%=VIL_WIN_W%-VIL_VWM_WL%-7-VIL_VWM_XM% 48088 VIL_W3%=VIL_WIN_Z%-VIL_VWM_ZL%-7-VIL_VWM_YM% 48092 VIL_W4%=VIL_WIN_X%+VIL_VWM_WL%+7-VIL_VWM_WM% 48096 VIL_W5%=VIL_WIN_Y%+VIL_VWM_ZL%+13-VIL_VWM_ZM% 48100 VIL_W2%=VIL_VWM_XM%-VIL_W2%*(VIL_W2%>0)-8 48104 VIL_W3%=VIL_VWM_YM%-VIL_W3%*(VIL_W3%>0)-14 48108 VIL_W4%=VIL_VWM_WM%-VIL_W4%*(VIL_W4%<0)+8 48112 VIL_W5%=VIL_VWM_ZM%-VIL_W5%*(VIL_W5%<0)+8 48128 VIL_W0%=2:VIL_W1%=1 48132 LINE(VIL_WIN_X%,VIL_WIN_Y%)-(VIL_WIN_W%,VIL_WIN_Z%),XOR,7,B 48136 VIL_MSEL_KY%=0 48140 WHILE VIL_MSEL_KY%<>-1 AND VIL_MSEL_KY%<>-2 48144 GOSUB*VIL_MSEL_KY 48148 IF VIL_MSEL_KY%=-4 THEN 48144 48152 LINE(VIL_WIN_X%,VIL_WIN_Y%)-(VIL_WIN_W%,VIL_WIN_Z%),XOR,7,B 48156 VIL_W6%=((VIL_MSEL_KY%=-6)-(VIL_MSEL_KY%=-5))*VIL_VWM_WD%+((VIL_MSEL_KY%=-10)-(VIL_MSEL_KY%=-9))*VIL_VWM_WD%*8 48164 IF VIL_W0%=1 THEN 48168 VIL_WIN_X%=VIL_WIN_X%+VIL_W6% 48172 IF VIL_WIN_X%<VIL_W2%THEN 48176 VIL_WIN_W%=VIL_W4%-(VIL_W4%-VIL_WIN_W%)MOD VIL_VWM_WD% 48180 VIL_WIN_X%=VIL_WIN_X%(VIL_WIN_AN%)-8:VIL_W0%=2 48184 ELSE IF VIL_WIN_W%-VIL_VWM_XL%-15<VIL_WIN_X%THEN 48188 VIL_WIN_X%=VIL_WIN_X%(VIL_WIN_AN%)-8:VIL_W0%=2 48192 VIL_WIN_W%=VIL_WIN_X%+VIL_VWM_XL%+15+(VIL_WIN_W%-VIL_WIN_X%-VIL_VWM_XL%-15)MOD VIL_VWM_WD% 48196 ENDIF 48200 ELSE 48204 VIL_WIN_W%=VIL_WIN_W%+VIL_W6% 48208 IF VIL_WIN_W%<VIL_WIN_X%+VIL_VWM_XL%+15 THEN 48212 VIL_WIN_W%=VIL_WIN_W%(VIL_WIN_AN%)+8:VIL_W0%=1 48216 VIL_WIN_X%=VIL_WIN_W%-VIL_VWM_XL%-15+(VIL_WIN_X%-VIL_WIN_W%+VIL_VWM_XL%+15)MOD VIL_VWM_WD% 48220 ELSE IF VIL_W4%<VIL_WIN_W%THEN 48224 VIL_WIN_X%=VIL_W2%-(VIL_W2%-VIL_WIN_X%)MOD VIL_VWM_WD% 48228 VIL_WIN_W%=VIL_WIN_W%(VIL_WIN_AN%)+8:VIL_W0%=1 48232 ENDIF 48236 ENDIF 48244 VIL_W6%=((VIL_MSEL_KY%=-7)-(VIL_MSEL_KY%=-8))*VIL_VWM_ZD%+((VIL_MSEL_KY%=-11)-(VIL_MSEL_KY%=-12))*VIL_VWM_ZD%*8 48252 IF VIL_W1%=1 THEN 48256 VIL_WIN_Y%=VIL_WIN_Y%+VIL_W6% 48260 IF VIL_WIN_Y%<VIL_W3%THEN 48264 VIL_WIN_Z%=VIL_W5%-(VIL_W5%-VIL_WIN_Z%)MOD VIL_VWM_ZD% 48268 VIL_WIN_Y%=VIL_WIN_Y%(VIL_WIN_AN%)-14:VIL_W1%=2 48272 ELSE IF VIL_WIN_Z%-VIL_VWM_YL%-21<VIL_WIN_Y%THEN 48276 VIL_WIN_Y%=VIL_WIN_Y%(VIL_WIN_AN%)-14:VIL_W1%=2 48280 VIL_WIN_Z%=VIL_WIN_Y%+VIL_VWM_YL%+21+(VIL_WIN_Z%-VIL_WIN_Y%-VIL_VWM_YL%-21)MOD VIL_VWM_ZD% 48284 ENDIF 48288 ELSE 48292 VIL_WIN_Z%=VIL_WIN_Z%+VIL_W6% 48296 IF VIL_WIN_Z%<VIL_WIN_Y%+VIL_VWM_YL%+21 THEN 48300 VIL_WIN_Z%=VIL_WIN_Z%(VIL_WIN_AN%)+8:VIL_W1%=1 48304 VIL_WIN_Y%=VIL_WIN_Z%-VIL_VWM_YL%-21+(VIL_WIN_Y%-VIL_WIN_Z%+VIL_VWM_YL%+21)MOD VIL_VWM_ZD% 48308 ELSE IF VIL_W5%<VIL_WIN_Z%THEN 48312 VIL_WIN_Y%=VIL_W3%-(VIL_W3%-VIL_WIN_Y%)MOD VIL_VWM_ZD% 48316 VIL_WIN_Z%=VIL_WIN_Z%(VIL_WIN_AN%)+8:VIL_W1%=1 48320 ENDIF 48324 ENDIF 48328 LINE(VIL_WIN_X%,VIL_WIN_Y%)-(VIL_WIN_W%,VIL_WIN_Z%),XOR,7,B 48332 WEND 48340 LINE(VIL_WIN_X%,VIL_WIN_Y%)-(VIL_WIN_W%,VIL_WIN_Z%),XOR,7,B 48344 IF VIL_MSEL_KY%=-2 THEN 48348 VIL_WIN_X%=VIL_WIN_X%+8:VIL_WIN_Y%=VIL_WIN_Y%+14 48352 VIL_WIN_W%=VIL_WIN_W%-8:VIL_WIN_Z%=VIL_WIN_Z%-8 48356 GOSUB*VIL_VWM_RS 48360 ELSE 48364 VIL_WIN_X%=VIL_WIN_X%(VIL_WIN_AN%) 48368 VIL_WIN_Y%=VIL_WIN_Y%(VIL_WIN_AN%) 48372 VIL_WIN_W%=VIL_WIN_W%(VIL_WIN_AN%) 48376 VIL_WIN_Z%=VIL_WIN_Z%(VIL_WIN_AN%) 48380 ENDIF 48384 IF VIL_VWM_PMB%THEN GOSUB*VIL_WIN_PMR 48388 RETURN 48396 *VIL_VWM_RS 48460 VIL_WIN_BFO&(VIL_WIN_AN%+1)=VIL_WIN_BFO&(VIL_WIN_AN%)+INT((INT((VIL_WIN_W%-VIL_WIN_X%+24)/8)*(VIL_WIN_Z%-VIL_WIN_Y%+23)*4+1)/2) 48464 IF VIL_WIN_BFO&(VIL_WIN_AN%+1)<VIL_WIN_BFO&(VIL_WIN_AN%)THEN 48468 VIL_WIN_BFO&(VIL_WIN_AN%+1)=VIL_WIN_BFO&(VIL_WIN_AN%) 48472 ENDIF 48476 VIL_E%=0 48480 GET@A(VIL_WIN_X%(VIL_WIN_AN%),VIL_WIN_Y%(VIL_WIN_AN%))-(VIL_WIN_W%(VIL_WIN_AN%),VIL_WIN_Z%(VIL_WIN_AN%)),VIL_WIN_BF%,VIL_WIN_BFO&(VIL_WIN_AN%+1) 48484 VIL_VWM_WX%=VIL_WIN_W%(VIL_WIN_AN%)-VIL_WIN_X%(VIL_WIN_AN%) 48488 VIL_VWM_WY%=VIL_WIN_Z%(VIL_WIN_AN%)-VIL_WIN_Y%(VIL_WIN_AN%) 48492 IF VIL_E%=0 THEN 48496 VIL_WIN_X%(VIL_WIN_AN%+1)=VIL_WIN_X% 48500 VIL_WIN_Y%(VIL_WIN_AN%+1)=VIL_WIN_Y% 48504 VIL_WIN_W%(VIL_WIN_AN%+1)=VIL_WIN_W% 48508 VIL_WIN_Z%(VIL_WIN_AN%+1)=VIL_WIN_Z% 48512 GOSUB*VIL_VWM_CL 48520 VIL_WIN_X%=VIL_WIN_X%(VIL_WIN_AN%+2) 48524 VIL_WIN_Y%=VIL_WIN_Y%(VIL_WIN_AN%+2) 48528 VIL_WIN_W%=VIL_WIN_W%(VIL_WIN_AN%+2) 48532 VIL_WIN_Z%=VIL_WIN_Z%(VIL_WIN_AN%+2) 48536 VIL_VWM_AT%=VIL_VWM_AT%(VIL_WIN_AN%+1) 48540 VIL_VWM_T$=VIL_VWM_T$(VIL_WIN_AN%+1) 48544 GOSUB*VIL_VWM_OP 48548 GOSUB*VIL_WIN_PMR 48552 PUT@A(0,0)-(VIL_VWM_WX%,VIL_VWM_WY%),VIL_WIN_BF%,,,,,VIL_WIN_BFO&(VIL_WIN_AN%+1) 48560 GOSUB*VIL_WIN_PMA 48564 VIL_VWM_R%=16 48568 ELSE 48572 VIL_WIN_X%=VIL_WIN_X%(VIL_WIN_AN%) 48576 VIL_WIN_Y%=VIL_WIN_Y%(VIL_WIN_AN%) 48580 VIL_WIN_W%=VIL_WIN_W%(VIL_WIN_AN%) 48584 VIL_WIN_Z%=VIL_WIN_Z%(VIL_WIN_AN%) 48588 VIL_VWM_R%=0 48592 ENDIF 48596 RETURN 48620 *VIL_SEL_INITM 48660 RETURN 48668 *VIL_SEL_OK 48772 SYMBOL(VIL_X%+4,VIL_Y%+4),"確認",1,1,7 48776 LINE(VIL_X%+2,VIL_Y%+2)-(VIL_X%+37,VIL_Y%+21),PSET,7,B 48780 VIL_W%=VIL_X%+39:VIL_Z%=VIL_Y%+23 48784 VIL_XN%=1:VIL_YN%=1:VIL_C%=15:VIL_MSEL_MN%=0:VIL_MSEL_BC%=0 48788 VIL_MSEL_BB%=1:VIL_MSEL_BE%=1 48792 GOSUB*VIL_MSEL_M 48796 GOSUB*VIL_MSEL_BC 48800 RETURN 48808 *VIL_SEL_YN 48924 SYMBOL(VIL_X%+4,VIL_Y%+4),"はい いいえ",1,1,7 48928 LINE(VIL_X%+2,VIL_Y%+2)-(VIL_X%+53,VIL_Y%+21),PSET,7,B 48932 LINE(VIL_X%+66,VIL_Y%+2)-(VIL_X%+117,VIL_Y%+21),PSET,7,B 48936 VIL_W%=VIL_X%+55:VIL_Z%=VIL_Y%+23 48940 VIL_XL%=64:VIL_XN%=2:VIL_YN%=1:VIL_C%=15:VIL_MSEL_BD%=0 48944 VIL_MSEL_MN%=0:VIL_MSEL_BC%=0:VIL_MSEL_BB%=1:VIL_MSEL_BE%=2 48948 GOSUB*VIL_MSEL_M 48952 GOSUB*VIL_MSEL_BC 48956 IF VIL_KN%=-1 THEN VIL_KN%=2 48960 RETURN 48968 *VIL_SEL_DO 49088 SYMBOL(VIL_X%+4,VIL_Y%+4),"実行 取消",1,1,7 49092 LINE(VIL_X%+2,VIL_Y%+2)-(VIL_X%+37,VIL_Y%+21),PSET,7,B 49096 LINE(VIL_X%+50,VIL_Y%+2)-(VIL_X%+85,VIL_Y%+21),PSET,7,B 49100 VIL_W%=VIL_X%+39:VIL_Z%=VIL_Y%+23 49104 VIL_XL%=48:VIL_XN%=2:VIL_YN%=1:VIL_C%=15:VIL_MSEL_BD%=0 49108 VIL_MSEL_MN%=0:VIL_MSEL_BC%=0:VIL_MSEL_BB%=1:VIL_MSEL_BE%=2 49112 GOSUB*VIL_MSEL_M 49116 GOSUB*VIL_MSEL_BC 49120 IF VIL_KN%=-1 THEN VIL_KN%=2 49124 RETURN 50030 *VIL_UTY_VER 50035 VIL_VER%=200 50040 RETURN 50075 *VIL_SYSCNF_INITM 50125 VIL_VWM_X%(10)=VIL_W0% 50130 VIL_VWM_Y%(10)=VIL_W1% 50135 VIL_VWM_W%(10)=VIL_W0%+111 50140 VIL_VWM_Z%(10)=VIL_W1%+79 50150 RETURN 50160 *VIL_SYSCNF_M 50200 VIL_VWM_N%=10:VIL_VWM_AT%=15:VIL_VWM_T$="SYSTEM" 50205 GOSUB*VIL_VWM_OP 50210 SYMBOL(8,8),"システム設定",1,1,6 50215 SYMBOL(8,36),"1 BGM設定",1,1,7 50220 SYMBOL(8,56),"2 色設定 ",1,1,7 50230 VIL_MSEL_BC%=0:VIL_VWM_R%=0 50235 WHILE VIL_VWM_R%<>2 50240 VIL_X%=4:VIL_Y%=34:VIL_W%=VIL_X%+103:VIL_Z%=VIL_Y%+19 50245 VIL_YL%=20:VIL_XN%=1:VIL_YN%=2:VIL_C%=15 50250 VIL_MSEL_BD%=0:VIL_MSEL_MN%=10:VIL_MSEL_BB%=1:VIL_MSEL_BE%=2 50255 GOSUB*VIL_MSEL_M 50260 IF VIL_KN%>0 THEN 50265 GOSUB*VIL_BEEP_G 50270 ON VIL_KN%GOSUB*VIL_BGM_M,*VIL_COLCNF_M 50275 VIL_VWM_R%=0 50280 ELSE IF VIL_KN%=-1 THEN 50285 GOSUB*VIL_VWM_CL:VIL_VWM_R%=2 50290 ELSE 50295 GOSUB*VIL_VWM_CHECK 50300 ENDIF 50305 WEND 50310 RETURN 50345 *VIL_COLCNF_INITM 50420 VIL_COLCNF_INT%=VIL_W4% 50425 VIL_COLCNF_INTB%=VIL_W4% 50430 DIM VIL_COLCNF_P%(2) 50435 DIM VIL_COLCNF_VWP%(2) 50440 DIM VIL_COLCNF_VWPB%(2) 50445 VIL_COLCNF_VWP%(0)=VIL_W5%:VIL_COLCNF_VWPB%(0)=VIL_W5% 50450 VIL_COLCNF_VWP%(1)=VIL_W6%:VIL_COLCNF_VWPB%(1)=VIL_W6% 50455 VIL_COLCNF_VWP%(2)=VIL_W7%:VIL_COLCNF_VWPB%(2)=VIL_W7% 50465 VIL_VWM_X%(20)=VIL_W0%:VIL_VWM_Y%(20)=VIL_W1% 50470 VIL_VWM_W%(20)=VIL_W0%+159:VIL_VWM_Z%(20)=VIL_W1%+99 50480 VIL_VWM_X%(21)=VIL_W2%:VIL_VWM_Y%(21)=VIL_W3% 50485 VIL_VWM_W%(21)=VIL_W2%+159:VIL_VWM_Z%(21)=VIL_W3%+99 50495 GOSUB*VIL_COLCNF_INIT 50505 RETURN 50515 *VIL_COLCNF_INIT 50560 VIL_COLCNF_INT%=VIL_COLCNF_INTB% 50565 IF VIL_COLCNF_INT%THEN VIL_K%=255 ELSE VIL_K%=192 50570 GOSUB*VIL_COLCNF_INTSET 50575 VIL_COLCNF_VWP%(0)=VIL_COLCNF_VWPB%(0) 50580 VIL_COLCNF_VWP%(1)=VIL_COLCNF_VWPB%(1) 50585 VIL_COLCNF_VWP%(2)=VIL_COLCNF_VWPB%(2) 50590 GOSUB*VIL_COLCNF_WPALSET 50595 RETURN 50605 *VIL_COLCNF_WPALSET 50645 VIL_W0%=VIL_COLCNF_VWP%(0) 50650 VIL_W1%=VIL_COLCNF_VWP%(1) 50655 VIL_W2%=VIL_COLCNF_VWP%(2) 50660 PALETTE 1,[VIL_W0%-80+(VIL_W0%<80)*(VIL_W0%-80),VIL_W1%-80+(VIL_W1%<80)*(VIL_W1%-80),VIL_W2%-80+(VIL_W2%<80)*(VIL_W2%-80)],1 50665 PALETTE 2,[VIL_W0%,VIL_W1%,VIL_W2%],1 50670 PALETTE 3,[VIL_W0%+80+(VIL_W0%>175)*(VIL_W0%-175),VIL_W1%+80+(VIL_W1%>175)*(VIL_W1%-175),VIL_W2%+80+(VIL_W2%>175)*(VIL_W2%-175)],1 50675 RETURN 50685 *VIL_COLCNF_M 50770 VIL_VWM_N%=20:VIL_VWM_AT%=15:VIL_VWM_T$="COLOR" 50775 GOSUB*VIL_VWM_OP 50780 SYMBOL(8,8)," 色設定 ",1,1,6 50785 SYMBOL(8,36),"1 表示 ["+KMID$("低高",1-VIL_COLCNF_INT%,1)+"輝度]",1,1,7 50790 SYMBOL(8,56),"2 パレット初期化",1,1,7 50795 SYMBOL(8,76),"3 ウィンドウ色設定",1,1,7 50805 VIL_MSEL_BC%=0:VIL_VWM_R%=0 50810 WHILE VIL_VWM_R%<>2 50815 VIL_X%=4:VIL_Y%=34:VIL_W%=VIL_X%+151:VIL_Z%=VIL_Y%+19 50820 VIL_YL%=20:VIL_XN%=1:VIL_YN%=3:VIL_C%=15 50825 VIL_MSEL_BD%=0:VIL_MSEL_MN%=20:VIL_MSEL_BB%=1:VIL_MSEL_BE%=3 50830 GOSUB*VIL_MSEL_M 50835 IF VIL_KN%>0 THEN 50840 GOSUB*VIL_BEEP_G 50845 ON VIL_KN%GOSUB 50915,*VIL_COLCNF_INIT,50945 50850 VIL_X%=88:VIL_Y%=36:VIL_L%=2:VIL_C%=15:VIL_CB%=VIL_VWM_CB% 50855 VIL_A$=KMID$("低高",1-VIL_COLCNF_INT%,1) 50860 GOSUB*VIL_INP_GPRINT 50865 VIL_VWM_R%=0 50870 ELSE IF VIL_KN%=-1 THEN 50875 GOSUB*VIL_VWM_CL:VIL_VWM_R%=2 50880 ELSE 50885 GOSUB*VIL_VWM_CHECK 50890 ENDIF 50895 WEND 50900 RETURN 50915 VIL_COLCNF_INT%=NOT VIL_COLCNF_INT% 50920 IF VIL_COLCNF_INT%THEN VIL_K%=255 ELSE VIL_K%=192 50925 GOSUB*VIL_COLCNF_INTSET 50930 RETURN 50945 VIL_P%=2 50950 VIL_COLCNF_P%(0)=VIL_COLCNF_VWP%(0) 50955 VIL_COLCNF_P%(1)=VIL_COLCNF_VWP%(1) 50960 VIL_COLCNF_P%(2)=VIL_COLCNF_VWP%(2) 50965 GOSUB*VIL_COLCNF_PALCNF 50970 VIL_COLCNF_VWP%(0)=VIL_COLCNF_P%(0) 50975 VIL_COLCNF_VWP%(1)=VIL_COLCNF_P%(1) 50980 VIL_COLCNF_VWP%(2)=VIL_COLCNF_P%(2) 50985 GOSUB*VIL_COLCNF_WPALSET 50990 RETURN 51000 *VIL_COLCNF_INTSET 51040 PALETTE 9,[0,0,VIL_K%],1 51045 PALETTE 10,[0,VIL_K%,0],1 51050 PALETTE 11,[0,VIL_K%,VIL_K%],1 51055 PALETTE 12,[VIL_K%,0,0],1 51060 PALETTE 13,[VIL_K%,0,VIL_K%],1 51065 PALETTE 14,[VIL_K%,VIL_K%,0],1 51070 PALETTE 15,[VIL_K%,VIL_K%,VIL_K%],1 51075 RETURN 51085 *VIL_COLCNF_PALCNF 51145 VIL_VWM_N%=21:VIL_VWM_AT%=15:VIL_VWM_T$="PALETTE" 51150 GOSUB*VIL_VWM_OP 51155 SYMBOL(32,8),"パレット設定",1,1,6 51160 LINE(8,8)-(23,24),PSET,%VIL_P%,BF 51165 LINE(136,8)-(151,24),PSET,%VIL_P%,BF 51175 GOSUB 51420 51180 FOR VIL_I%=2 TO 0 STEP-1 51185 SYMBOL(8,VIL_I%*20+36),MID$("GRB",3-VIL_I%,1),1,1,4-VIL_I%+(VIL_I%>0) 51190 SYMBOL(16,VIL_I%*20+36),"( )",1,1,7 51195 FOR VIL_J%=1 TO 3 51200 LINE(VIL_MSEL_X%(VIL_I%*3+VIL_J%)+2,VIL_MSEL_Y%(VIL_I%*3+VIL_J%)+2)-(VIL_MSEL_W%(VIL_I%*3+VIL_J%)-2,VIL_MSEL_Z%(VIL_I%*3+VIL_J%)-2),PSET,7,B 51205 NEXT 51210 SYMBOL(48,VIL_I%*20+36),"〈",1,1,7 51215 SYMBOL(141,VIL_I%*20+36),"〉",1,1,7 51220 GOSUB 51370 51225 NEXT 51235 VIL_MSEL_BC%=0:VIL_VWM_R%=0 51240 WHILE VIL_VWM_R%<>2 51250 VIL_XN%=3:VIL_YN%=3:VIL_C%=15 51255 VIL_MSEL_BD%=4:VIL_MSEL_MN%=21:VIL_MSEL_BB%=1:VIL_MSEL_BE%=9 51260 GOSUB*VIL_MSEL_IN 51265 IF VIL_KN%>0 THEN 51270 VIL_I%=2-(VIL_KN%-1)\3 51275 VIL_J%=VIL_KN%MOD 3 51280 IF VIL_J%=2 THEN 51290 ELSE 51295 VIL_COLCNF_P%(VIL_I%)=VIL_COLCNF_P%(VIL_I%)+((VIL_J%=1)-(VIL_J%=0))*16 51300 VIL_COLCNF_P%(VIL_I%)=VIL_COLCNF_P%(VIL_I%)+((255<VIL_COLCNF_P%(VIL_I%))-(VIL_COLCNF_P%(VIL_I%)<0))*256 51305 ENDIF 51310 GOSUB 51370 51315 PALETTE VIL_P%,[VIL_COLCNF_P%(0),VIL_COLCNF_P%(1),VIL_COLCNF_P%(2)],1 51320 ELSE IF VIL_KN%=-1 THEN 51325 GOSUB*VIL_VWM_CL:VIL_VWM_R%=2 51330 ELSE 51335 GOSUB*VIL_VWM_CHECK 51340 GOSUB 51420 51345 ENDIF 51350 WEND 51355 RETURN 51370 VIL_X%=24:VIL_Y%=VIL_I%*20+36:VIL_L%=2:VIL_C%=15 51375 VIL_A$=FNVIL_P2SS$(VIL_COLCNF_P%(VIL_I%)\16,2):VIL_CB%=VIL_VWM_CB% 51380 GOSUB*VIL_INP_GPRINT 51385 LINE(72,VIL_I%*20+37)-(131,VIL_I%*20+50),PSET,%VIL_VWM_CB%,BF 51390 IF VIL_COLCNF_P%(VIL_I%)\16 THEN 51395 LINE(72,VIL_I%*20+37)-(71+(VIL_COLCNF_P%(VIL_I%)\16)*4,VIL_I%*20+50),PSET,4-VIL_I%+(VIL_I%>0),BF 51400 ENDIF 51405 RETURN 51420 FOR VIL_I%=0 TO 2 51425 VIL_MSEL_X%(VIL_I%*3+1)=50:VIL_MSEL_Y%(VIL_I%*3+1)=74-VIL_I%*20 51430 VIL_MSEL_W%(VIL_I%*3+1)=69:VIL_MSEL_Z%(VIL_I%*3+1)=93-VIL_I%*20 51435 VIL_MSEL_X%(VIL_I%*3+2)=69:VIL_MSEL_Y%(VIL_I%*3+2)=74-VIL_I%*20 51440 VIL_MSEL_W%(VIL_I%*3+2)=134:VIL_MSEL_Z%(VIL_I%*3+2)=93-VIL_I%*20 51445 VIL_MSEL_X%(VIL_I%*3+3)=134:VIL_MSEL_Y%(VIL_I%*3+3)=74-VIL_I%*20 51450 VIL_MSEL_W%(VIL_I%*3+3)=153:VIL_MSEL_Z%(VIL_I%*3+3)=93-VIL_I%*20 51455 NEXT 51460 RETURN 51500 *VIL_BGM_INITM 51545 VIL_VWM_X%(30)=VIL_W0%:VIL_VWM_Y%(30)=VIL_W1% 51550 VIL_VWM_W%(30)=VIL_W0%+96:VIL_VWM_Z%(30)=VIL_W1%+79 51560 RETURN 51570 *VIL_BGM_M 51645 VIL_VWM_N%=30:VIL_VWM_AT%=15:VIL_VWM_T$="BGM" 51650 GOSUB*VIL_VWM_OP 51655 SYMBOL(8,8),"BGM設定",1,1,6 51660 SYMBOL(8,36),"1 FM音源",1,1,7 51665 SYMBOL(8,56),"2 CDDA",1,1,7 51675 VIL_MSEL_BC%=0:VIL_VWM_R%=0 51680 WHILE VIL_VWM_R%<>2 51685 VIL_X%=4:VIL_Y%=34:VIL_W%=VIL_X%+87:VIL_Z%=VIL_Y%+19 51690 VIL_YL%=20:VIL_XN%=1:VIL_YN%=2:VIL_C%=15 51695 VIL_MSEL_BD%=0:VIL_MSEL_MN%=30:VIL_MSEL_BB%=1:VIL_MSEL_BE%=2 51700 GOSUB*VIL_MSEL_M 51705 IF VIL_KN%>0 THEN 51710 GOSUB*VIL_BEEP_G 51715 ON VIL_KN%GOSUB*VIL_BGMFM_M,*VIL_BGMCD_M 51720 VIL_VWM_R%=0 51725 ELSE IF VIL_KN%=-1 THEN 51730 GOSUB*VIL_VWM_CL:VIL_VWM_R%=2 51735 ELSE 51740 GOSUB*VIL_VWM_CHECK 51745 ENDIF 51750 WEND 51755 RETURN 51790 *VIL_BGMFM_INITM 51855 VIL_BGMFM_P!=0 51860 VIL_BGMFM_T%=0 51865 VIL_BGMFM_PF%=0 51870 VIL_BGMFM_SP%=0 51875 VIL_BGMFM_LF%=-1 51880 VIL_BGMFM_MB%=0:VIL_BGMFM_ME%=0 51885 VIL_BGMFM_LB%=0:VIL_BGMFM_LE%=0 51890 VIL_BGMFM_TMAX%=0 51895 VIL_BGMFM_DMAX%=0 51900 VIL_BGMFM_INIT$="" 51905 VIL_BGMFM_ST!=0 51915 DIM VIL_BGMFM_M0$(VIL_W4%),VIL_BGMFM_M1$(VIL_W4%) 51920 DIM VIL_BGMFM_M2$(VIL_W4%),VIL_BGMFM_M3$(VIL_W4%) 51925 DIM VIL_BGMFM_M4$(VIL_W4%),VIL_BGMFM_M5$(VIL_W4%) 51930 DIM VIL_BGMFM_T$(VIL_W5%) 51935 DIM VIL_BGMFM_N$(VIL_W5%) 51945 DIM VIL_BGMFM_MB%(VIL_W6%) 51950 DIM VIL_BGMFM_ME%(VIL_W6%) 51955 DIM VIL_BGMFM_LB%(VIL_W6%) 51960 DIM VIL_BGMFM_LE%(VIL_W6%) 51965 DIM VIL_BGMFM_INIT$(VIL_W6%) 51970 DIM VIL_BGMFM_ST!(VIL_W6%) 51985 VIL_VWM_X%(31)=VIL_W0%:VIL_VWM_Y%(31)=VIL_W1% 51990 VIL_VWM_W%(31)=VIL_W0%+175:VIL_VWM_Z%(31)=VIL_W1%+79 52000 VIL_VWM_X%(32)=VIL_W2%:VIL_VWM_Y%(32)=VIL_W3% 52005 VIL_VWM_W%(32)=VIL_W2%+287:VIL_VWM_Z%(32)=VIL_W3%+223 52015 GOSUB*VIL_BGMFM_TRD 52020 RETURN 52030 *VIL_BGMFM_M 52115 VIL_VWM_N%=31:VIL_VWM_AT%=15:VIL_VWM_T$="BGM FM" 52120 GOSUB*VIL_VWM_OP 52125 IF VIL_BGMCD_PF%THEN GOSUB*VIL_BGMCD_OFF 52130 SYMBOL(8,8)," FM音源BGM ",1,1,6 52135 SYMBOL(8,36),"1 BGM ["+KMID$("OFFON ",1-VIL_BGMFM_PF%*3,3)+"]",1,1,7 52140 SYMBOL(8,56),"2 曲選択",1,1,7 52150 VIL_MSEL_BC%=0:VIL_VWM_R%=0 52155 WHILE VIL_VWM_R%<>2 52160 VIL_X%=4:VIL_Y%=34:VIL_W%=VIL_X%+167:VIL_Z%=VIL_Y%+19 52165 VIL_YL%=20:VIL_XN%=1:VIL_YN%=2:VIL_C%=15 52170 VIL_MSEL_BD%=0:VIL_MSEL_MN%=31:VIL_MSEL_BB%=1:VIL_MSEL_BE%=2 52175 GOSUB*VIL_MSEL_M 52180 IF VIL_KN%>0 THEN 52185 GOSUB*VIL_BEEP_G 52190 ON VIL_KN%GOSUB 52260,*VIL_BGMFM_SEL 52195 VIL_X%=104:VIL_Y%=36:VIL_L%=6:VIL_C%=15:VIL_CB%=VIL_VWM_CB% 52200 VIL_A$=KMID$("OFFON ",1-VIL_BGMFM_PF%*3,3) 52205 GOSUB*VIL_INP_GPRINT 52210 VIL_VWM_R%=0 52215 ELSE IF VIL_KN%=-1 THEN 52220 GOSUB*VIL_VWM_CL:VIL_VWM_R%=2 52225 ELSE 52230 GOSUB*VIL_VWM_CHECK 52235 ENDIF 52240 WEND 52245 RETURN 52260 IF VIL_BGMFM_PF%THEN 52265 GOSUB*VIL_BGMFM_OFF 52270 ELSE 52275 IF VIL_BGMFM_INIT$=""THEN 52280 GOSUB*VIL_BEEP_B 52290 ELSE 52295 GOSUB*VIL_BGMFM_ON 52300 ENDIF 52305 ENDIF 52310 RETURN 52320 *VIL_BGMFM_SEL 52410 VIL_VWM_N%=32:VIL_VWM_AT%=15:VIL_VWM_T$="BGM SELECT" 52415 GOSUB*VIL_VWM_OP 52420 SYMBOL(8,8)," FM音源BGM 曲選択",1,1,6 52430 GOSUB 52580 52440 VIL_MSEL_BC%=0:VIL_VWM_R%=0 52445 WHILE VIL_VWM_R%<>2 52450 VIL_X%=4:VIL_Y%=34:VIL_W%=VIL_X%+279:VIL_Z%=VIL_Y%+19 52455 VIL_YL%=20:VIL_XN%=1:VIL_YN%=9:VIL_C%=15 52460 VIL_MSEL_BD%=0:VIL_MSEL_MN%=32:VIL_MSEL_BB%=1:VIL_MSEL_BE%=9 52465 GOSUB*VIL_MSEL_M 52470 IF VIL_KN%>0 THEN 52475 IF VIL_KN%=9 THEN 52480 VIL_BGMFM_SP%=VIL_BGMFM_SP%+8 52485 IF VIL_BGMFM_SP%>VIL_BGMFM_TMAX%THEN VIL_BGMFM_SP%=0 52490 GOSUB 52580 52495 ELSE IF VIL_BGMFM_SP%+VIL_KN%-2<VIL_BGMFM_TMAX%THEN 52500 VIL_W0%=INSTR(VIL_BGMFM_N$(VIL_BGMFM_SP%+VIL_KN%-1),"/") 52505 VIL_F$=LEFT$(VIL_BGMFM_N$(VIL_BGMFM_SP%+VIL_KN%-1),VIL_W0%-1) 52510 VIL_A$=MID$(VIL_BGMFM_N$(VIL_BGMFM_SP%+VIL_KN%-1),VIL_W0%+1) 52520 GOSUB*VIL_BGMFM_DRD 52525 ENDIF 52530 VIL_VWM_R%=0 52535 ELSE IF VIL_KN%=-1 THEN 52540 GOSUB*VIL_VWM_CL:VIL_VWM_R%=2 52545 ELSE 52550 GOSUB*VIL_VWM_CHECK 52555 ENDIF 52560 WEND 52565 RETURN 52580 VIL_L%=34:VIL_C%=15:VIL_CB%=VIL_VWM_CB% 52585 FOR VIL_I%=0 TO 7 52590 VIL_X%=8:VIL_Y%=VIL_I%*20+36 52595 VIL_A$=HEX$(VIL_I%+1) 52600 IF VIL_BGMFM_SP%+VIL_I%<=VIL_BGMFM_TMAX%THEN VIL_A$=VIL_A$+" "+VIL_BGMFM_T$(VIL_BGMFM_SP%+VIL_I%) 52605 GOSUB*VIL_INP_GPRINT 52610 NEXT 52615 SYMBOL(8,196),"9 ~ 次頁 ~",1,1,7 52620 RETURN 52630 *VIL_BGMFM_TRD 52670 VIL_E%=0 52675 OPEN"I",#1,VIL_FMTDIR$+"VIL_FM.TTL" 52680 IF VIL_E%=0 THEN 52685 INPUT#1,VIL_BGMFM_TMAX% 52690 VIL_BGMFM_TMAX%=VIL_BGMFM_TMAX%-1 52695 FOR VIL_I%=0 TO VIL_BGMFM_TMAX% 52700 LINE INPUT#1,VIL_BGMFM_T$(VIL_I%) 52705 LINE INPUT#1,VIL_BGMFM_N$(VIL_I%) 52710 NEXT 52715 CLOSE#1 52720 ENDIF 52725 RETURN 52735 *VIL_BGMFM_DRD 52845 VIL_W0%=VIL_BGMFM_PF% 52850 IF VIL_W0%THEN GOSUB*VIL_BGMFM_OFF 52855 VIL_A$=":"+VIL_A$ 52860 IF LEFT$(VIL_F$,1)<>"\"AND MID$(VIL_F$,2,1)<>":"THEN 52865 VIL_F$=VIL_FMTDIR$+VIL_F$ 52870 ENDIF 52875 OPEN"I",#1,VIL_F$ 52880 GOSUB 53045:IF VIL_W0$<>VIL_A$THEN 52880 52885 GOSUB 53045 52890 IF VIL_W0$="*"THEN 52895 LOAD@ 52900 ELSE 52905 IF LEFT$(VIL_W0$,1)<>"\"AND MID$(VIL_W0$,2,1)<>":"THEN 52910 VIL_W0$=VIL_FMTDIR$+VIL_W0$ 52915 ENDIF 52920 LOAD@VIL_W0$ 52925 ENDIF 52930 GOSUB 53045:VIL_BGMFM_LB%=VAL(VIL_W0$)+VIL_BGMFM_MB% 52935 GOSUB 53045:VIL_BGMFM_LE%=VAL(VIL_W0$)+VIL_BGMFM_MB% 52940 GOSUB 53045:VIL_BGMFM_ME%=VAL(VIL_W0$)+VIL_BGMFM_MB% 52945 GOSUB 53045:VIL_BGMFM_INIT$=VIL_W0$ 52950 GOSUB 53045:VIL_BGMFM_ST!=VAL(VIL_W0$) 52960 FOR VIL_I%=VIL_BGMFM_MB%TO VIL_BGMFM_ME% 52965 GOSUB 53045:VIL_BGMFM_M0$(VIL_I%)=VIL_W0$:NEXT 52970 FOR VIL_I%=VIL_BGMFM_MB%TO VIL_BGMFM_ME% 52975 GOSUB 53045:VIL_BGMFM_M1$(VIL_I%)=VIL_W0$:NEXT 52980 FOR VIL_I%=VIL_BGMFM_MB%TO VIL_BGMFM_ME% 52985 GOSUB 53045:VIL_BGMFM_M2$(VIL_I%)=VIL_W0$:NEXT 52990 FOR VIL_I%=VIL_BGMFM_MB%TO VIL_BGMFM_ME% 52995 GOSUB 53045:VIL_BGMFM_M3$(VIL_I%)=VIL_W0$:NEXT 53000 FOR VIL_I%=VIL_BGMFM_MB%TO VIL_BGMFM_ME% 53005 GOSUB 53045:VIL_BGMFM_M4$(VIL_I%)=VIL_W0$:NEXT 53010 FOR VIL_I%=VIL_BGMFM_MB%TO VIL_BGMFM_ME% 53015 GOSUB 53045:VIL_BGMFM_M5$(VIL_I%)=VIL_W0$:NEXT 53020 CLOSE#1 53025 IF VIL_W0%THEN GOSUB*VIL_BGMFM_ON 53030 RETURN 53045 LINE INPUT#1,VIL_W0$:IF LEFT$(VIL_W0$,1)="'"THEN 53045 53050 RETURN 53060 *VIL_BGMFM_ON 53100 VIL_BGMFM_PF%=-1:VIL_BGMFM_P!=0:VIL_BGMFM_T%=VIL_BGMFM_MB% 53105 PLAY VIL_BGMFM_INIT$ 53110 GOSUB*VIL_BGMFM_DRV 53115 ON INTERVAL GOSUB*VIL_BGMFM_DRV:INTERVAL 1:INTERVAL ON 53120 RETURN 53130 *VIL_BGMFM_OFF 53170 VIL_BGMFM_PF%=0:INTERVAL OFF:PLAY OFF 53175 RETURN 53185 *VIL_BGMFM_DRV 53225 IF PLAY(1)>=VIL_BGMFM_P!-1 THEN 53230 VIL_BGMFM_P!=VIL_BGMFM_P!+VIL_BGMFM_ST! 53235 PLAY VIL_BGMFM_M0$(VIL_BGMFM_T%),VIL_BGMFM_M1$(VIL_BGMFM_T%),VIL_BGMFM_M2$(VIL_BGMFM_T%),VIL_BGMFM_M3$(VIL_BGMFM_T%),VIL_BGMFM_M4$(VIL_BGMFM_T%),VIL_BGMFM_M5$(VIL_BGMFM_T%) 53240 VIL_BGMFM_T%=VIL_BGMFM_T%+1 53245 IF VIL_BGMFM_T%>VIL_BGMFM_LE%AND VIL_BGMFM_LF%THEN VIL_BGMFM_T%=VIL_BGMFM_LB% 53250 IF VIL_BGMFM_T%>VIL_BGMFM_ME%THEN INTERVAL OFF:VIL_BGMFM_PF%=0 53255 ENDIF 53260 RETURN 53410 *VIL_BGMCD_INITM 53455 VIL_BGMCD_PF%=0 53460 VIL_BGMCD_TF%=0 53465 VIL_BGMCD_MF%=0 53470 VIL_BGMCD_PN%=1 53475 DIM VIL_BGMCD_I%(5),VIL_BGMCD_S%(8) 53490 VIL_VWM_X%(33)=VIL_W0%:VIL_VWM_Y%(33)=VIL_W1% 53495 VIL_VWM_W%(33)=VIL_W0%+243:VIL_VWM_Z%(33)=VIL_W1%+115 53505 RETURN 53515 *VIL_BGMCD_M 53600 VIL_VWM_N%=33:VIL_VWM_AT%=15:VIL_VWM_T$="BGM CD" 53605 GOSUB*VIL_VWM_OP 53610 IF VIL_BGMFM_PF%THEN GOSUB*VIL_BGMFM_OFF 53615 LINE(0,0)-(243,115),PSET,%2,BF 53620 SYMBOL(57,4),"CDDA BGM-PLAYER",1,1,4,,,3 53625 FOR VIL_I%=26 TO 72 STEP 46 53630 FOR VIL_J%=52 TO 152 STEP 50 53635 LINE(VIL_J%,VIL_I%)-(VIL_J%+39,VIL_I%+37),PSET,%VIL_VWM_CB%,BF 53640 NEXT 53645 NEXT 53655 LINE(6,72)-(41,109),PSET,%VIL_VWM_CB%,BF 53660 LINE(202,72)-(237,109),PSET,%VIL_VWM_CB%,BF 53670 VIL_E%=0 53675 CDINF VIL_BGMCD_I% 53680 IF VIL_E%THEN 53685 VIL_WIN_X%=VIL_WIN_X%+2:VIL_WIN_Y%=VIL_WIN_Y%+64 53690 VIL_WIN_W%=VIL_WIN_X%+239:VIL_WIN_Z%=VIL_WIN_Y%+31 53695 VIL_VWM_AT%=0:VIL_VWM_T$="ERROR":VIL_VWM_N%=0 53700 GOSUB*VIL_VWM_OP 53705 SYMBOL(8,8),"CDがセットされていません。",1,1,7 53710 GOSUB*VIL_INP_MVWAIT 53715 GOSUB*VIL_VWM_CL:GOSUB*VIL_VWM_CL 53720 ELSE 53725 IF VIL_BGMCD_I%(1)=3 THEN VIL_BGMCD_I%(1)=2 53730 IF VIL_BGMCD_PN%<VIL_BGMCD_I%(1)THEN VIL_BGMCD_PN%=VIL_BGMCD_I%(1) 53735 IF VIL_BGMCD_I%(5)<VIL_BGMCD_PN%THEN VIL_BGMCD_PN%=VIL_BGMCD_I%(1) 53745 SYMBOL(56,28),"MODE",1,1,7 53750 SYMBOL(110,28),"BGM",1,1,7 53755 SYMBOL(156,28),"TEST",1,1,7 53760 SYMBOL(57,76),"<",2,2,7 53765 SYMBOL(157,76),">",2,2,7 53770 SYMBOL(8,76),FNVIL_P2S0$(VIL_BGMCD_I%(1),2),2,2,7 53775 SYMBOL(204,76),FNVIL_P2S0$(VIL_BGMCD_I%(5),2),2,2,7 53780 SYMBOL(106,76),FNVIL_P2S0$(VIL_BGMCD_PN%,2),2,2,7 53785 GOSUB 54130 53790 GOSUB 54110 53800 VIL_MSEL_BC%=0:VIL_VWM_R%=0 53805 WHILE VIL_VWM_R%<>2 53810 VIL_X%=50:VIL_Y%=24+46:VIL_W%=VIL_X%+43:VIL_Z%=VIL_Y%+41 53815 VIL_XL%=50:VIL_YL%=46:VIL_XN%=3:VIL_YN%=2:VIL_C%=15 53820 VIL_MSEL_BD%=4:VIL_MSEL_MN%=33:VIL_MSEL_BB%=1:VIL_MSEL_BE%=6 53825 GOSUB*VIL_MSEL_M 53830 IF VIL_KN%>0 THEN 53835 ON VIL_KN%GOSUB 53985,54005,54085,53895,53915,53965 53840 VIL_VWM_R%=0 53845 ELSE IF VIL_KN%=-1 THEN 53850 GOSUB*VIL_VWM_CL:VIL_VWM_R%=2 53855 ELSE 53860 GOSUB*VIL_VWM_CHECK 53865 ENDIF 53870 WEND 53875 ENDIF 53880 RETURN 53895 VIL_BGMCD_MF%=NOT VIL_BGMCD_MF% 53900 GOSUB 54130 53905 RETURN 53915 VIL_BGMCD_PF%=NOT VIL_BGMCD_PF% 53920 IF VIL_BGMCD_PF%THEN 53925 INTERVAL 1:ON INTERVAL GOSUB*VIL_BGMCD_DRV:INTERVAL ON 53930 GOSUB*VIL_BGMCD_DRV 53935 ELSE 53940 INTERVAL OFF:CD STOP 53945 ENDIF 53950 GOSUB 54130 53955 RETURN 53965 VIL_BGMCD_TF%=NOT VIL_BGMCD_TF% 53970 GOSUB 54130 53975 RETURN 53985 VIL_BGMCD_PN%=VIL_BGMCD_PN%-1 53990 IF VIL_BGMCD_PN%<VIL_BGMCD_I%(1)THEN VIL_BGMCD_PN%=VIL_BGMCD_I%(5) 53995 GOSUB 54105:RETURN 54005 VIL_WIN_X%=VIL_WIN_X%+64:VIL_WIN_Y%=VIL_WIN_Y%+32 54010 VIL_WIN_W%=VIL_WIN_X%+111:VIL_WIN_Z%=VIL_WIN_Y%+51 54015 VIL_VWM_AT%=0:VIL_VWM_T$="INPUT":VIL_VWM_N%=0 54020 GOSUB*VIL_VWM_OP 54025 SYMBOL(8,8),"トラック番号",1,1,6 54030 VIL_X%=32:VIL_Y%=28:VIL_L%=2:VIL_C%=15:VIL_CB%=VIL_VWM_CB%:VIL_A$="" 54035 GOSUB*VIL_INP_STR 54040 IF VIL_A$>""THEN 54045 IF VAL(VIL_A$)<VIL_BGMCD_I%(1)OR VIL_BGMCD_I%(5)<VAL(VIL_A$)THEN 54050 GOSUB*VIL_BEEP_B:GOTO 54035 54055 ENDIF 54060 ENDIF 54065 GOSUB*VIL_VWM_CL 54070 IF VIL_A$>""THEN VIL_BGMCD_PN%=VAL(VIL_A$):GOSUB 54105 54075 RETURN 54085 VIL_BGMCD_PN%=VIL_BGMCD_PN%+1 54090 IF VIL_BGMCD_PN%>VIL_BGMCD_I%(5)THEN VIL_BGMCD_PN%=VIL_BGMCD_I%(1) 54095 GOSUB 54105:RETURN 54105 IF VIL_BGMCD_TF%=-1 THEN CD PLAY VIL_BGMCD_PN% 54110 LINE(102,72)-(141,109),PSET,%VIL_VWM_CB%,BF 54115 SYMBOL(106,76),FNVIL_P2S0$(VIL_BGMCD_PN%,2),2,2,7 54120 RETURN 54130 LINE(60,46)-(83,61),PSET,%VIL_VWM_CB%,BF 54135 SYMBOL(60,46),MID$("ONEALL",1-VIL_BGMCD_MF%*3,3),1,1,7 54140 LINE(110,46)-(133,61),PSET,%VIL_VWM_CB%,BF 54145 SYMBOL(110,46),MID$("OFFON",1-VIL_BGMCD_PF%*3,3),1,1,7 54150 LINE(162,46)-(185,61),PSET,%VIL_VWM_CB%,BF 54155 SYMBOL(162,46),MID$("OFFON",1-VIL_BGMCD_TF%*3,3),1,1,7 54160 RETURN 54170 *VIL_BGMCD_ON 54210 VIL_BGMCD_PF%=-1 54215 GOSUB*VIL_BGMCD_DRV 54220 INTERVAL 1:ON INTERVAL GOSUB*VIL_BGMCD_DRV:INTERVAL ON 54225 RETURN 54235 *VIL_BGMCD_OFF 54270 VIL_BGMCD_PF%=0:INTERVAL OFF:CD STOP 54275 RETURN 54285 *VIL_BGMCD_DRV 54335 VIL_E%=0 54340 CDSTAT VIL_BGMCD_S% 54345 IF VIL_E%THEN 54350 VIL_BGMCD_PF%=0:INTERVAL OFF 54355 ELSE IF VIL_BGMCD_S%(1)=0 THEN 54360 IF VIL_BGMCD_MF%THEN CD PLAY ELSE CD PLAY VIL_BGMCD_PN% 54365 ENDIF 54370 RETURN